与ObjC和ios的本地区块

时间:2011-07-03 05:33:53

标签: objective-c ios block

  

可能重复:
  Is Block_copy recursive?

我不确定块如何保留块。

int i = 0;
void(^stackBlock)(void) = ^(void) {
    (void)i;  //use local variable 'i'
};
NSLog(@"%@", stackBlock);

void(^completionHandler)(void) = ^(void) {
    stackBlock();
};
[something doSomethingWithCompletionHandler:completionHandler];

stackBlock是__NSStackBlock__,这意味着保留它是无用的。 doSomethingWithCompletionHandle:将复制completionHandler,并在从互联网下载一些数据后再调用它。

我的问题是示例代码安全吗?

因为我知道retain __NSStackBlock__没用,所以stackBlock将不会被保留(应该使用copy),然后在范围之外调用它是不安全的。

0 个答案:

没有答案