Tij*_*Kez 2 objective-c nsmutablearray
我有一个子类,UIViewController带有NSMutableArray一个属性,用作a的数据源UITableView.我在故事板中创建了一个类的实例.
我想用addObject:方法填充数组,但如果我尝试,数组总是返回(null).
我读过这@synthesize不会初始化数组,我可能需要覆盖-init并初始化NSMutableArray那里,但-init永远不会被调用.
这应该怎么样?
您需要创建一个实例NSMutableArray并将其分配给该属性.
由于具有属性的对象是UIViewController在故事板中创建的,因此您可以在几个不同的位置执行此操作.你可以覆盖initWithCoder:,或awakeFromNib,或viewDidLoad.
如果覆盖initWithCoder:,则必须调用该super方法.
如果你这样做,在viewDidLoad加载视图之前不会创建数组,这不必立即发生.
我建议你这样做awakeFromNib:
@synthesize myArray = _myArray;
- (void)awakeFromNib {
_myArray = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是通过覆盖属性的getter方法来懒惰地创建数组:
@synthesize myArray = _myArray;
- (NSMutableArray *)myArray {
if (!_myArray)
_myArray = [[NSMutableArray alloc] init];
return _myArray;
}
Run Code Online (Sandbox Code Playgroud)
如果这样做,那么始终使用getter方法(self.myArray或[self myArray])访问数组并且永远不要_myArray直接访问实例变量()非常重要.