0

在我的 iPhone 应用程序中,我有一个NSObject类“联系人”,其中我有一个这样的字符串

@interface Contact : NSObject

@property (nonatomic, retain) NSString *name;

@implementation Contact

@synthesize name;

我在其他一些类(在Sqlite方法中)中使用了这个名称字符串,如下所示

  Contact *contact = [[[Contact alloc] init] autorelease];

   contact.name = [NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 1)];

当我使用仪器跑步时,我有一些内存警告

contact.name = [NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 1)];

我有很多这样的泄漏..如何解决这个问题..

4

1 回答 1

1

我看不出您显示的代码有任何问题,除非您没有在您的类中正确实现该dealloc方法。Contact

它应该是这样的(Contact.m):

-(void) dealloc {
   [name release];
   [super dealloc];
}

我不知道你的评论是什么意思

是的,我在卸载时使用它来释放它们

如果您所做的只是Contact在视图控制器的viewDidUnload方法中释放对象,那还不够。

但是,我会借此机会说ARC 已经有一段时间了,几乎所有不是专家(以及大多数专家)的人都应该使用 ARC,而不是像这样的手动内存管理。

它确实节省了大量这些耗时的调试练习,如果你的问题这个dealloc问题,那么 ARC 会为你解决这个问题。

于 2013-01-02T10:50:26.103 回答