Macro for checking nil/NULL blocks
This is an easy and quick tip I came across while going through NSHipster's Reader Submissions - 2016. Sometimes we use the blocks which we may or may not be nil. Well, unlike other mechanism by which you can send message to nil object, you cannot call a nil/NULL block. It will result in the instant crash.
This NSHipster reader submission provides a macro which can be reused to automatically check for nil blocks.
#define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); };
So as Article points out, it replaces old and clunky way to check for nil blocks as follows,
if (block) {
block(arg1, arg2);
}
Now instead of doing it, you can simply call it as,
BLOCK_EXEC(completionBlock, arg1, arg2);