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