我不斷收到來自該SQL語句中的內存泄漏跡象時,我給你從數據庫中檢索到的值...iphone sqlite的內存泄漏:(字符*)sqlite3_column_text
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];
但是如果我用普通的NSString的替換nsobject類對象... tmpPerson ...泄漏不再抱怨了?有誰知道爲什麼?
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];
}
任何幫助將不勝感激。我見過很多與此相關的帖子,但我不確定人們是否獲得了我提到的相同行爲。
謝謝你的工作! – ArdenDev 2010-11-05 23:18:05