作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在接口(interface)上声明了这样一个ivar:
BOOL controllerOK;
我必须在自身位于 block 中的 block 中使用此 ivar。有点像
myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (controllerOK)
[self doStuff];
}];
};
如果我尝试这样做,我会看到一条警告:
capturing self strongly in this block is likely to lead to a retain cycle
对于 if (controllerOK) 行。
这似乎不是您在 block 开始之前使用 __unsafe_unretained 创建另一个变量的那些 block 问题之一。首先是因为该指令不能与 BOOL 一起使用,其次是因为必须在 block 内的运行时测试 ivar controllerOK。另一个问题是 block 本身是在接口(interface)上声明的,因此它将在创建它的上下文之外使用。
我该如何解决?
最佳答案
这应该有效:
__weak id this = self;
myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (this->controllerOK)
[this doStuff];
}];
};
关于iphone - ivar 在两个街区内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13558709/
问题 - 人们根据自己的兴趣在不同的地方发帖,而其他人则在更大的领域搜索帖子。 例如- 用户 A 在悉尼郊区邦迪海滩 (Bondi Beach) 下发帖。 用户 B 在悉尼下搜索帖子。 预期结果 -
我是一名优秀的程序员,十分优秀!