这里是 iOS 新手。
我有一个类,它是 UIViewController 的子类,称为 CommonVC。它没有与其直接关联的场景。它在 .h 文件中声明一个属性:
@property (strong, nonatomic) SomeClass *someClass;
我修改了我的场景 View Controller 之一,将 CommonVC 作为父类(super class)而不是 UIViewContoller:
@interface SceneViewController : CommonVC
在 SceneViewController 中,我为属性创建了一个惰性实例化 getter:
- (SomeClass *)someClass
{
return self.someClass ? self.someClass :
(self.someClass = [[SomeClass alloc] initWithData:@"xxx"]);
}
编译正常,但在运行时因 EXC_BAD_ACCESS(code=2,...) 崩溃。调试器指向覆盖方法,并且“self”为零(0x00000000)。
对 getter (self.someClass) 的第一个引用是在 viewDidLoad 方法中。我认为 View Controller 及其父类(super class)此时已经被实例化。
Chuyện gì đang xảy ra vậy?
Cảm ơn.
return self.someClass ? self.someClass
这是一个无限循环。代码 self.someClass 相当于 [self someClass];这样就会被无休止地调用。您需要将 self.someClass 更改为 _someClass。
Tôi là một lập trình viên xuất sắc, rất giỏi!