我正在使用 ARC 在 Objective-C 中开发一个应用程序。
我的简化代码如下所示:
A 类 (.m)
MyCustomClass *obj = [[MyCustomClass alloc] initWithValue1:@"abc" value2:1000];
MyViewController *vc = [[MyViewController alloc] initWithObject:obj];
// "vc" will become the first item of a UITabBarController
我的视图控制器 (.h)
- (id)initWithObject:(MyCustomClass *)obj {
...
localReferenceToOjbect = obj;
...
}
- (void)viewWillAppear:(BOOL)animated {
// do something with "localRefernceToObject" <---
}
启动应用程序将导致对僵尸的调用:当显示 ViewController 时,“obj”将已被释放,因此我不能再使用它了。
我的解决方法是:
A 类 (.h)
@interface ClassA : UIViewController {
MyCustomClass *obj;
}
A 类 (.m)
obj = [[MyCustomClass alloc] initWithValue1:@"abc" value2:1000];
MyViewController *vc = [[MyViewController alloc] initWithObject:obj];
// "vc" will become the first item of a UITabBarController
这是正确的方法吗?!我不这么认为:为什么我要存储一个对ClassA无用的对象的 istance ?
我无法解释实际发生的事情。你可以帮帮我吗?