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

@property (nonatomic, strong) NSArray *myArray;

在此数组的设置器中,我想检查数组计数是否为0,然后返回nil,否则按原样返回数组。我这样做如下:
- (NSArray *)myArray
{
    return ([self.myArray count] == 0) ? nil : self.myArray;
}

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

最佳答案

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

self.myArray

由编译器翻译为
[self myArray]

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

在属性的设置器或获取器方法中,您必须访问
而是关联的实例变量,例如
- (NSArray *)myArray
{
    return ([_myArray count] == 0) ? nil : _myArray;
}

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

10-11 04:28