【发布时间】:2011-05-05 11:51:37
【问题描述】:
当我分配从数据库中检索的值时,我不断从这个 sql 语句中得到内存泄漏指示...
Person *tmpPerson = [[Person alloc] init];
tmpPerson.personName = [NSString stringWithUTF8String: (char*)sqlite3_column_text(SelectPersonStmt, 0)];
tmpPerson.personEmail = [NSString stringWithUTF8String: (char*)sqlite3_column_text(SelectPersonStmt, 1)];
[personList addObject:tmpPerson];
[tmpPerson release];
但是,如果我将 nsobject 类对象 ...tmpPerson 替换为常规 NSString 的 ...leaks 就不再抱怨了吗?有谁知道为什么?
NSString * personName = [NSString stringWithUTF8String:(char*)sqlite3_column_text(SelectPersonStmt, 0)];
NSString * personEmail = [NSString stringWithUTF8String:(char*)sqlite3_column_text(SelectPersonStmt, 1)];
这是我的类定义...有什么问题吗?
@interface Person : NSObject {
NSString* personName;
NSString* personMobile;
NSString* personEmail;
}
@property (nonatomic, retain) NSString* personName, *personEmail, *personMobile;
- (id)init
{
if ((self = [super init])) {
personName = [NSString string];
personEmail = [NSString string];
personMobile = [NSString string];
}
return self;
}
我在这里遗漏了什么吗?我是否应该初始化这些字符串,它似乎没有任何区别?我把它们放在那里,以防我想用一些默认值初始化它们。
在通过仪器进行测试时,我注意到在释放方法期间触发了内存泄漏。这个我试过了,也没用
-(void) dealloc
{
personName = nil;
personEmail = nil;
[super dealloc];
}
任何帮助将不胜感激。我看过很多与此相关的帖子,但我不确定人们是否得到了我提到的相同行为。
【问题讨论】:
标签: iphone sqlite memory memory-leaks