【发布时间】:2014-03-24 15:48:33
【问题描述】:
在 Objective-C 中,如何正确实现对可能为 nil 的属性的惰性求值?
下面演示了通常的做法,但它不适用于可能为 nil 的属性 - 它们的初始化不会只执行一次。
@interface LZClass: NSObject
@property (strong, readonly) NSString * lazyProp;
@end
@implementation LZClass
@synthesize lazyProp = _lazyProp;
- (NSString *)lazyProp {
if (_lazyProp == nil) {
_lazyProp = <Some Calculation>;
}
return _lazyProp
}
@end
【问题讨论】:
-
使用 dispatch_once,或者干脆有一个单独的布尔变量。
标签: objective-c thread-safety lazy-loading lazy-evaluation lazy-initialization