问题
我正在迁移一些遗留代码(iOS 5 之前),我在其中延迟加载一些readonly
属性。我想用 ARC 将此代码更新到 iOS 5+。但我只是了解ARC。
。H
@property (nonatomic, retain, readonly) NSDateFormatter *timeFormatter;
.m
- (NSDateFormatter *)timeFormatter {
if (timeFormatter == nil) {
timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateFormat:@"h:mm a"];
}
return timeFormatter;
}
我试过的
我试图简单地更新我的代码,但收到一个:Assignment to readonly property。
。H
@property (nonatomic, strong, readonly) NSDateFormatter *timeFormatter;
.m
- (NSDateFormatter *)timeFormatter {
if (self.timeFormatter == nil) {
self.timeFormatter = [[NSDateFormatter alloc] init];
[self.timeFormatter setDateFormat:@"h:mm a"];
}
return self.timeFormatter;
}
我还回顾了:
- ios ARC强和alloc
- iOS上的线程安全延迟初始化
- http://www.cocoanetics.com/2012/02/threadsafe-lazy-property-initialization/
问题
readonly
使用 ARC 在 iOS 5+ 中延迟加载属性的正确方法是什么?非常感谢.h和.m的代码示例。