当我将NULL
或nil
传递到animateWithDuration:animations:completion:
的完成区块时,iOS不会对我尖叫,但这是否意味着它没问题?或者打开一个空的^{ }
?
答案 0 :(得分:38)
只要您相信传递nil
的代码不会尝试将其称为块,这是可以的。
快速演示:
typedef void (^GenericBlock)(void);
void useThisBlock(GenericBlock block){
block();
}
useThisBlock(^{NSLog(@"All okay.");});
useThisBlock(nil); // Compiles but crashes
内部代码必须先检查阻止:if( block ) block();
对于UIKit代码,你应该没问题。
答案 1 :(得分:6)
传递nil
很好,在我看来,会产生更清晰的阅读代码。
如果您不想使用完成块,在这种情况下,您也可以使用[UIView animateWithDuration:animations:]
方法。