假设我有一个像这样的简单DTO类:
@interface MYNugget
@property (nonatomic, copy) NSString *color;
@end
@implementation MYNugget
// automatic @synthesize
@end
Run Code Online (Sandbox Code Playgroud)
然后我想要将这个对象存储在另一个类中,使得它不可修改(也就是说,color通过一个- (void)freeze或多个东西使该属性只读.
编写我自己的二传手的最佳方法是什么?
标准方法是必须使用类,一个是可变的,一个是不可变的.
@interface MYNugget
@property (nonatomic, copy, readonly) NSString *color;
@end
Run Code Online (Sandbox Code Playgroud)
和
@interface MYMutableNugget : MYNugget
@property (nonatomic, copy, readwrite) NSString *color;
@end
Run Code Online (Sandbox Code Playgroud)
你的另一个类只会暴露一个MYNugget属性,理想情况下也是如此copy.这就是我们一直这样做NSString的方式.