Ios 惰性实例化不工作
我在.h文件中声明了一个名为Ios 惰性实例化不工作,ios,lazy-initialization,Ios,Lazy Initialization,我在.h文件中声明了一个名为cellTitles的属性。在我的.m文件中,我有如下方法: -(NSArray *)cellTitles { if(!_cellTitles){ _cellTitles = [[NSArray alloc] initWithObjects:@"several strings", nil]; NSLog(@"Home Array Created"); } return _cellTitles; } 但是当我参考
cellTitles
的属性。在我的.m文件中,我有如下方法:
-(NSArray *)cellTitles
{
if(!_cellTitles){
_cellTitles = [[NSArray alloc] initWithObjects:@"several strings", nil];
NSLog(@"Home Array Created");
}
return _cellTitles;
}
但是当我参考
\u cellTitles
或self.cellTitles
时,并没有创建数组。我有几个NSLog都说阵列有0个对象。我需要更多吗。一些答案说我需要合成,但据我所知,这不再是必要的。确保你的属性被强赋值
@property (nonatomic, strong) NSArray *cellTitles;
很抱歉,我不知道如何使代码更具可读性。能否显示您的属性声明,并显示您用于访问属性的代码?作为猜测,是否已在类构造函数中创建了_cellTitles?很好,请同时显示类的init
方法。是否设置了断点来验证调用了此代码?您的属性是否声明为(非原子,强)?——这是不对的,如果您想正确的话,您可以延迟加载一个弱属性,但在这种情况下,任何其他对象似乎都不会持有对数组的强引用。编辑答案。大多数情况下,您希望具有可变子类的对象是copy
。。只是说;)