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

标签 ios frameworks objective-c-blocks

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

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

使用返回值作为停止标志看起来更好。

BOOL(^)(id obj)

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

最佳答案

当然,无论哪种方式都可以正常工作,但请这样想:您是否必须在 for 的末尾使用 continue 语句>while 循环?不,当然不是因为它是自动发生的。如果你想停止循环,你可以使用 break

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

关于ios - 为什么大多数 block 使用参数作为迭代继续标志而不是返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684656/

相关文章:

IOS 以编程方式拒绝来电?

php - 将按钮登录更改为登录后注销 o 导航栏引导

ios - 使用 Swift 创建 iOS 应用程序,需要知道如何使用 mysql 数据库跟踪用户数据?

ios - 如何隐藏 Google map 位置点

macos - OSX 如何使用位于当前工作目录或子目录 C/C++ 中的 GCC/G++ 编译框架

objective-c - 编译时 block 会发生什么?我可以在运行时创建一个 block 吗?

swift - 在 Swift 中将闭包存储为变量

java - 将 objective-c 面向 block 的 api 转换为 android

ios - 在 GMAIL 中解码电子邮件正文 (ios)

xcode - 在 xcode 中创建框架时保留目录结构