假设我有一个像这样的简单DTO类:
@interface MYNugget
@property (nonatomic, copy) NSString *color;
@end
@implementation MYNugget
// automatic @synthesize
@end
然后我想要将此对象存储在 另一个类 中,使其不可修改(即,使color
属性只能通过- (void)freeze
或其他东西。
完成编写自己的二传手的最佳方法是什么?
答案 0 :(得分:5)
标准方法是必须使用类,一个是可变的,一个是不可变的。
@interface MYNugget
@property (nonatomic, copy, readonly) NSString *color;
@end
和
@interface MYMutableNugget : MYNugget
@property (nonatomic, copy, readwrite) NSString *color;
@end
您的其他课程只会公开MYNugget
属性,理想情况下会再次显示为copy
。这就是我们一直使用NSString
的方式。
答案 1 :(得分:0)
我要做的是仅通过构造函数设置颜色:
@interface MYNugget
@property (nonatomic, copy, readonly) NSString *color;
- (id) initWithColor:(NSString *)color;
@end
@implementation MYNugget
@synthesize color = _color;
- (id) initWithColor:(NSString *)color {
self = [super init];
if (self) {
_color = [color copy];
}
return self;
}
@end