访问NSManagedObject中的属性会导致内存峰值和崩溃

时间:2009-09-25 11:56:30

标签: iphone memory core-data

我正在编写一个使用核心数据进行存储的iPhone应用程序。我的所有NSManagedObject子类都是由xcode根据我的数据模型自动生成的。其中一个类看起来像这样:

@interface Client :  NSManagedObject  
{
}

@property (nonatomic, retain) NSNumber * rate;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * description;
@property (nonatomic, retain) NSSet* projects;

@end

创建和保存此类的新实例效果很好,但是当我尝试访问此类实例的“description”属性时,程序意外退出。在Instruments中运行时,我可以看到在崩溃之前,很快就会分配大量内存(这可能就是应用程序退出的原因)。

访问该属性的代码如下所示:

self.clientName = [[client.name copy] autorelease];
self.clientRate = [[client.rate copy] autorelease];
self.textView.text = client.description; // This is where it crashes

请注意,可以毫无问题地访问其他属性(名称和速率)。

那我做错了什么?

1 个答案:

答案 0 :(得分:2)

从Apple文档(核心数据编程指南):

请注意,属性名称不能与NSObject或NSManagedObject的任何无参数方法名称相同,例如,您不能为属性指定名称“description”(请参阅​​NSPropertyDescription)。

如jbrennan所述,这应该会导致您遇到的问题。