【发布时间】:2015-03-17 18:48:05
【问题描述】:
假设你有这样的东西:
ivarOutsideOfBlock = @"foo";
[doSomethingThatTakesAwhile start:^(NSError *error) {
if(!error){
ivarOutsideOfBlock = @"somethingElse";
// Might crash because iVarOutsideOfBlock may no longer exist
}
}];
此时,假设对 ivar(视图控制器)的引用被释放。代码会崩溃吗(无效地址)?
这方面的最佳做法是什么?是把ivar转成视图控制器上的强属性吗?
【问题讨论】:
-
一个对象将调用回调(
start块)。此对象将保留您的初始对象。
标签: ios objective-c memory-management objective-c-blocks