我有一个包含字典的对象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,我无法找到有关的可变性存在的差异.
今天我接受采访时被问到一个问题:
手动生成二传手和吸气剂,使用手动参考计数进行适当的声明:
@interface SomeClass : NSObject
{
NSMutableArray* _array;
}
@property (copy) NSArray* array;
@end
Run Code Online (Sandbox Code Playgroud)
我的回答是:
- (NSArray *)array
{
@syncronized (self)
{
return [_array copy];
}
}
- (void)setArray:(NSArray *)array
{
@synchronized (self)
{
if (_array != array)
{
[_array release];
_array = [array mutableCopy];
[_array retain]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从未使用过MRC,所以不确定答案的正确性.请帮我修改这段代码并附上说明!