gpt4 book ai didi

iOS - UIViewController - 覆盖 UIViewController 子类链中的 getter 时出现运行时错误

转载 作者:行者123 更新时间:2023-11-29 03:50:45 25 4
gpt4 key购买 nike

这里是 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)此时已经被实例化。

这是怎么回事?

谢谢。

最佳答案

return self.someClass ? self.someClass

这是一个无限循环。代码 self.someClass 相当于 [self someClass];这样就会被无休止地调用。您需要将 self.someClass 更改为 _someClass。

关于iOS - UIViewController - 覆盖 UIViewController 子类链中的 getter 时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com