Это нормально, если вы можете верить, что код, которому вы передаете nil
, не будет пытаться вызвать его как блок.
Быстрая демонстрация:
typedef void (^GenericBlock)(void);
void useThisBlock(GenericBlock block){
block();
}
useThisBlock(^{NSLog(@"All okay.");});
useThisBlock(nil); // Compiles but crashes
Внутренний код должен сначала проверить блок: if( block ) block();
В случае кода UIKit у вас все будет в порядке.