gpt4 book ai didi

ios - 数组 setter 的错误多余代码

转载 作者:行者123 更新时间:2023-11-29 13:02:24 26 4
gpt4 key购买 nike

我有一个 NSArray 类型的数组,如下所示:

@property (nonatomic, strong) NSArray *myArray;

在这个数组的setter中,我想检查数组计数是否为0,然后返回nil,否则按原样返回数组。我这样做如下:

- (NSArray *)myArray
{
return ([self.myArray count] == 0) ? nil : self.myArray;
}

如果我为 NSArray 返回 nil,我不会收到任何构建错误,但它会给我错误访问代码的运行时错误。我在这里犯了什么错误?

最佳答案

您的 getter 方法正在递归调用自身,因为

self.myArray

由编译器翻译成

[self myArray]

这最终会导致堆栈溢出 (!)。

在属性的 setter 或 getter 方法中,您必须访问关联的实例变量,例如

- (NSArray *)myArray
{
return ([_myArray count] == 0) ? nil : _myArray;
}

关于ios - 数组 setter 的错误多余代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457189/

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