这里有一个类似的问题,它没有准确解释我想要什么:Objective C Blocks as Async-callbacks & BAD ACCESS
我有一个视图控制器,它使用异步回调调用服务。回调是使用一个块完成的,该块引用视图控制器上的变量来填充它们。
它看起来像这样:
- (void) loadData {
__block MyViewController *me = self;
[self.service executeWithCompletion:^(NSArray *result, NSError *error) {
if (!error) {
me.data = result;
}
}];
}
但是,如果我解除了视图控制器的分配,则回调会严重访问“我”。
使“我”为空的最简单方法是什么?如果我把它作为一个 iVar,它会带回循环引用......我想?
我想我错过了一些明显的东西......
谢谢