重写访问器时的@synthesize语法

时间:2011-04-07 11:19:13

标签: objective-c accessor

我正在做一个值对象/实体,它为我的模型保存数据。 我现在从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的所有对象创建这些“普通”属性的幻觉,但是实体内部不会分配/存储不必要的对象或编写超出需要的代码吗

1 个答案:

答案 0 :(得分:1)

在您的界面中声明name方法,而不是属性。

- (void)name;