我正在做一个值对象/实体,它为我的模型保存数据。
我现在从Web服务获取数据为JSON,而不是将解析后的JSON中的所有不同对象移动到我的实体上的不同属性中。即为@“name”键读出NSString并将其设置为[Entity setName:[JSONDictionary objectForKey:@"name"]
等。我的实体有一个实际属性,
NSDictionary *dataDictionary
,此属性在离开解析器时保存JSON字典。
现在,当我需要名称值时,我会编写一个如下所示的访问器:
- (NSString*) name {
return [self.dataDictionary objectForKey:@"name"];
}
这很好,除非有特定属性的请求,否则我不需要做任何工作。
现在我的问题是如何最好地告诉编译器访问器存在,但不具有“真实”属性。 我在我的界面中有这个:
@property(nonatomic, retain) NSString *name;
我的实现中的@synthesize
,但这似乎在我的逻辑中产生了开销。据我所知,目标C将在内存中为我存储一个空间,以便在我执行@property(nonatomic, retain)
时存储NSString类型的对象,技术上我不需要这个,因为我已经将此值存储在NSDictionary *dataDictionary
如果我成功@dynamic
我想我也必须提供一个我永远不需要的制定者。
那么,是否有一种语法可以让我为访问Entity的所有对象创建这些“普通”属性的幻觉,但是实体内部不会分配/存储不必要的对象或编写超出需要的代码吗
答案 0 :(得分:1)
在您的界面中声明name
方法,而不是属性。
- (void)name;