Mat*_*ros 4 iphone cocoa cocoa-touch objective-c ios
我有一个包含字典的对象JSONData.从头文件,以及将访问它的其他类,我希望此属性只是只读和不可变.
@interface MyObject : NSObject
@property (readonly, strong, nonatomic) NSDictionary *JSONData;
@end
Run Code Online (Sandbox Code Playgroud)
但是,我需要它readwrite和实现文件一样可变,就像这样,但这不起作用:
@interface MyObject ()
@property (readwrite, strong, nonatomic) NSMutableDictionary *JSONData;
@end
@implementation MyObject
// Do read/write stuff here.
@end
Run Code Online (Sandbox Code Playgroud)
我有什么办法可以强制执行我想要的那种抽象吗?我看了看其他的问题,虽然我已经知道如何使财产readonly从.h和readwrite从.m,我无法找到有关的可变性存在的差异.
您的实现中需要一个单独的私有可变变量.您可以覆盖getter以返回不可变对象.
@interface MyObject () {
NSMutableDictionary *_mutableJSONData;
}
@end
@implementation MyObject
// ...
-(NSDictionary *)JSONData {
return [NSDictionary dictionaryWithDictionary:_mutableJSONData];
}
// ...
@end
Run Code Online (Sandbox Code Playgroud)
不需要实现setter readonly.
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |