0

假设我有一个像这样的简单 DTO 类:

@interface MYNugget
@property (nonatomic, copy) NSString *color;
@end

@implementation MYNugget
// automatic @synthesize
@end

然后我想以一种不可修改的方式将该对象存储在另一个类中(也就是说,通过 a或其他东西使color属性只读。- (void)freeze

除了编写我自己的二传手之外,最好的方法是什么?

4

2 回答 2

5

标准的方法是拥有类,一个可变的和一个不可变的。

@interface MYNugget
@property (nonatomic, copy, readonly) NSString *color;
@end

@interface MYMutableNugget : MYNugget
@property (nonatomic, copy, readwrite) NSString *color;
@end

您的其他类只会公开一个MYNugget属性,理想情况下又是copy. 这就是我们一直这样做NSString的方式。

于 2012-10-18T08:57:36.507 回答
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
于 2012-10-18T08:58:29.280 回答