对于大多数迭代块,签名的定义如下:
void(^)(id obj, BOOL* stop)
使用返回值来停止标记看起来更好。
BOOL(^)(id obj)
但是我相信有充分的理由让他们决定使用当前形式而不是更简短方便的形式。为什么他们使用参数作为停止标志?
答案 0 :(得分:4)
当然,无论哪种方式都可行,但请按照这种方式考虑:您是否必须在continue
或for
循环结束时使用while
语句?不,当然不是因为它自动发生。如果您想停止循环,可以使用break
。
与基于块的枚举方法类似。您不需要返回YES
来指定是否要继续枚举,因为它会自动发生。但是,如果您想停止枚举,只需将*stop
设置为YES
。