我已经有几次想要创建一个同时具有nonatomic
和readonly
属性的变量了。
这样做的好处是我可以重写getter方法并检查实例是否已经被创建。如果没有,我可以简单地创建它。
同时,我可以保护该变量免受被覆盖的影响。
.h
@property (strong, readonly, nonatomic) Foo *bar;
.m
- (Foo *)bar {
if (!_bar) {
_bar = [[Foo alloc] init];
}
return _bar;
}
每当我这样做时,编译器不会为我创建一个实例变量,所以_bar
不存在。
为什么?如何创建一个readonly
的nonatomic
属性?
Foo *bar;
或者将其隐藏在类别@interface SomeClass (){Foo *bar;}
中。 - mike-dutka