【发布时间】:2011-07-31 14:43:17
【问题描述】:
我正在做一个值对象/实体,它为我的模型保存数据。
现在,我以 JSON 形式从 Web 服务获取数据,而不是将所有不同对象从解析的 JSON 移到我的实体上的不同属性中。即读出 @"name" 键的 NSString 并将其设置为 [Entity setName:[JSONDictionary objectForKey:@"name"] 等。我的实体有一个实际属性,
NSDictionary *dataDictionary,这个属性保存了 JSON 字典,因为它离开了解析器。
现在,当我需要名称值时,我编写了一个如下所示的访问器:
- (NSString*) name {
return [self.dataDictionary objectForKey:@"name"];
}
这很好,除非有对该特定属性的请求,否则我不需要做任何工作。
现在我的问题是如何最好地告诉编译器访问器存在,但不包含“真实”属性。 我的界面中有这个:
@property(nonatomic, retain) NSString *name;
还有我的实现中的@synthesize,但这似乎在我的逻辑中产生了开销。据我了解,Objective C 会在我执行@property(nonatomic, retain) 时为我在内存中腾出一个空间来存储 NSString 类型的对象,从技术上讲,我不需要这个,因为我已经将这个值存储在 @ 987654327@
如果我做到@dynamic 我想我还必须提供一个我永远不需要的setter。
那么,是否有一种语法可以让我给所有访问实体的对象创造一种错觉,即这些是“正常”属性,但在实体内部不会分配/存储不必要的对象或编写比需要更多的代码?
【问题讨论】:
标签: objective-c accessor