Утечка памяти в строке NSStringWithUTF8String - PullRequest
2 голосов
/ 31 мая 2011

Я звоню в базу данных. После моего звонка я обнаружил утечки в NSString. У кого-нибудь есть решение удалить его?

 NSString *pic = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 5)];

В приведенном выше коде я обнаружил 90% утечек. Я просто читаю данные из базы данных.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

, пожалуйста, объясните вопрос хорошо, иначе другие не смогут точно определить вашу проблему.

Я думаю, что вы присваиваете значение [NSString stringWithUTF8String: (char *) sqlite3_column_text (selectStatement, 5)]; в свойстве объекта класса.

Вы можете освободить назначенное свойство строки класса в соответствующем классе dealloc метод. Также установите его nil.

Пример:

если вы делаете

YourClass *classObj =[ YourClass  alloc] init];

classObj.myStringvariable = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 5)];

структура класса будет выглядеть как

@interface YourClass {

    NSString *myStringvariable ;

}

@property (nonatomic,retain)  NSString *myStringvariable ;

.m file будет

@synthesise myStringvariable ;


-(void)init{

 myStringvariable  = @"";

}

-(void)dealloc{

 [myStringvariable  release];
 myStringvariable  = nil;
}

Проверьте это .. эта структура не будет показывать утечку памяти.

2 голосов
/ 31 мая 2011

Вы звоните sqlite3_finalize(), чтобы освободить память?

Если вы делаете это, то утечка, возможно, связана с NSString, но нам нужно знать, что вы делаете с ним (он автоматически выпущен, поэтому вам не нужно release, но вы может сохранить его где-то еще в вашем коде).

Кроме того, небезопасно передавать sqlite3_column_text непосредственно в stringWithUTF8String, поскольку в случае возврата nil ваше приложение будет аварийно завершено.

Вы можете также рассмотреть возможность использования fMDB , оболочки ObjC для sqlite3. Найдите его здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...