I see sometimes completion block set to nil, and sometimes to NULL. I just guess if there is no return value it’s nil while it’s NULL with return value. Is it correct?
Technically, they are all the same under the hood. They all represent 0. So you can use nil or NULL and either will work just fine.
Conventionally you’ll use nil for objects and NULL for pointers and blocks.