是否可以将NULL传递给块参数?

时间:2011-12-19 23:50:38

标签: iphone objective-c ios ipad

当我将NULLnil传递到animateWithDuration:animations:completion:的完成区块时,iOS不会对我尖叫,但这是否意味着它没问题?或者打开一个空的^{ }

更好

2 个答案:

答案 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:]方法。