我有一个保存字典JSONData
的对象。从头文件到将访问它的其他类,我希望此属性仅是只读且不可变的。
@interface MyObject : NSObject
@property (readonly, strong, nonatomic) NSDictionary *JSONData;
@end
但是,我需要它从实现文件中readwrite
和可变,如下所示,但这不起作用:
@interface MyObject ()
@property (readwrite, strong, nonatomic) NSMutableDictionary *JSONData;
@end
@implementation MyObject
// Do read/write stuff here.
@end
我能做些什么来强制执行我想要的那种抽象吗?我查看了其他问题,虽然我已经知道如何从.h
和.m
readwrite
属性readonly
,但我找不到任何关于可变性差异的信息。
在实现中需要一个单独的私有可变变量。您可以重写 getter 以返回不可变对象。
@interface MyObject () {
NSMutableDictionary *_mutableJSONData;
}
@end
@implementation MyObject
// ...
-(NSDictionary *)JSONData {
return [NSDictionary dictionaryWithDictionary:_mutableJSONData];
}
// ...
@end
无需实现二传手,因为它readonly
.