NSA*_*ict 3 iphone macos cocoa properties objective-c
有几次已经我想作一个属性,它是nonatomic和readonly在同一时间.
这样做的好处是我可以覆盖getter并检查是否已经创建了一个实例.如果没有,我可以简单地创建它.
同时我可以保护它不被覆盖.
@property (strong, readonly, nonatomic) Foo *bar;
Run Code Online (Sandbox Code Playgroud)
- (Foo *)bar {
if (!_bar) {
_bar = [[Foo alloc] init];
}
return _bar;
}
Run Code Online (Sandbox Code Playgroud)
每当我这样做时,编译器不会为我创建实例变量,因此_bar不存在.
为什么?我该如何创建一个readonly nonatomic属性?
您的财产声明是正确的.我相信这里的问题是,因为你的属性被声明为readonly,编译器不会自动合成底层实例变量.在这种情况下的解决方案是使用...自己合成一个...
@synthesize bar = _bar;
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |