为什么在enumerateObjectsUsingBlock中停止一个BOOL指针:?

时间:2013-05-12 18:29:19

标签: objective-c

我理解what the stop parameter is for,但我很想知道为什么这是BOOL *而不仅仅是BOOL。是因为值本身需要存在于块范围之外,因此enumerateObjectsUsingBlock:可以访问块本身可能分配给它的值吗?

1 个答案:

答案 0 :(得分:4)

要回答你的问题(尽管它看起来像是一个骗子),该块需要告诉其调用者停止枚举它是否找到了它正在寻找的内容。 C中有两种选择:

  • return YES继续或return NO停止。
  • 在调用者的范围内设置一个变量,即BOOL *

Apple选择了第二种方法,尽管我认为第一种方法更简单(少一个参数)并且更直观。

它不能只是BOOL,因为它只设置变量的本地副本,而不是调用者范围内的变量。