gpt4 book ai didi

objective-c - (iOS) NSMutableArray 作为属性 addObject 什么都不做

转载 作者:行者123 更新时间:2023-12-04 03:26:35 25 4
gpt4 key购买 nike

我有一个 UIViewController 的子类,它带有一个 NSMutableArray 作为属性,用作 UITableView 的数据源。我在 Storyboard中创建了该类的一个实例。

我想用 addObject: 方法填充数组,但如果我尝试,数组总是返回 (null)

我读到 @synthesize 没有初始化数组,我可能需要覆盖 -init 并在那里初始化 NSMutableArray 但是 -init 永远不会被调用。

这应该如何工作?

最佳答案

您需要创建一个 NSMutableArray 实例并将其分配给该属性。

由于具有该属性的对象是在 Storyboard中创建的 UIViewController,因此您可以在几个不同的地方执行此操作。您可以覆盖 initWithCoder:,或 awakeFromNib,或 viewDidLoad

如果重写 initWithCoder:,则必须调用 super 方法。

如果您在 viewDidLoad 中执行此操作,则在加载 View 之前不会创建数组,这不必立即发生。

我建议在 awakeFromNib 中进行:

@synthesize myArray = _myArray;

- (void)awakeFromNib {
_myArray = [[NSMutableArray alloc] init];
}

另一种选择是通过覆盖属性的 getter 方法来延迟创建数组:

@synthesize myArray = _myArray;

- (NSMutableArray *)myArray {
if (!_myArray)
_myArray = [[NSMutableArray alloc] init];
return _myArray;
}

如果这样做,请务必始终使用 getter 方法(self.myArray[self myArray])访问数组,而不要通过访问实例变量 (_myArray) 直接。

关于objective-c - (iOS) NSMutableArray 作为属性 addObject 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9357237/

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