我发现自己现在对所有函数的初始化都很懒惰。它只是感觉更自然,它允许我停止编写设置函数。这是故意的吗?陷阱是什么?
@property (nonatomic, strong) NSMutableArray *array1;
-(NSMutableArray *)array1{
if (!_array1){
_array1 = [[NSMutableArray alloc] init];
}
return _array1;
}
然后我发现自己在做这样的事情:
-(NSMutableArray *)array1{
if (!_array1){
_array1 = [[NSMutableArray alloc] init];
// read a file
// [_array addObject:newObject];
}
return _array1;
}
它是,它不是。懒惰的实例化作为一个概念是可以的,但你必须小心。例如,如果两个不同的线程试图同时访问您的任何一个变量,那么您可能会得到两个不同延迟实例化的变量。点击此处查看答案:
iOS 上的线程安全延迟初始化
对所有内容进行延迟加载可能会导致运行时用户交互速度减慢,因为应用程序可能会不时忙于将内容加载到内存中。仅在需要时使用(即,当对象需要大量内存才能完成加载时)