为什么大多数块使用参数迭代继续标志而不是返回值?

时间:2011-07-13 19:44:56

标签: ios frameworks objective-c-blocks

对于大多数迭代块,签名的定义如下:

void(^)(id obj, BOOL* stop)

使用返回值来停止标记看起来更好。

BOOL(^)(id obj)

但是我相信有充分的理由让他们决定使用当前形式而不是更简短方便的形式。为什么他们使用参数作为停止标志?

1 个答案:

答案 0 :(得分:4)

当然,无论哪种方式都可行,但请按照这种方式考虑:您是否必须在continuefor循环结束时使用while语句?不,当然不是因为它自动发生。如果您想停止循环,可以使用break

与基于块的枚举方法类似。您不需要返回YES来指定是否要继续枚举,因为它会自动发生。但是,如果您想停止枚举,只需将*stop设置为YES