iOS新手在这里。
我有一个类,它是 UIViewController 的子类,称为 CommonVC。它没有直接关联的场景。它在 .h 文件中声明一个属性:
@property (strong, nonatomic) SomeClass *someClass;
我修改了我的一个场景视图控制器以将 CommonVC 作为超类而不是 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' 为 nill (0x00000000)。
对 getter (self.someClass) 的第一个引用是在 viewDidLoad 方法中。我认为此时视图控制器及其超类将被实例化。
到底是怎么回事?
谢谢。