Я получаю сообщение об утечке памяти из этого оператора 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 ... утечки, больше не будет жаловаться? Кто-нибудь знает почему?
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];
}
Любая помощь будет принята с благодарностью. Я видел много сообщений, связанных с этим, но я не уверен, что люди ведут себя так же, как я упоминал.