iphone: утечка памяти при чтении данных в цикле из базы данных - PullRequest
1 голос
/ 04 июня 2011

Кто-нибудь может мне помочь, почему этот фрагмент кода протекает и как мы можем с ним справиться?

const char *sqlStatement = "SELECT * FROM VIOLATIONS_TBL";

sqlite3_stmt *compiledStatement;

if (sqlite3_prepare(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {

    while (sqlite3_step(compiledStatement) == SQLITE_ROW) {

        NSString *recSTR=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
        [self.pickerList addObject:recSTR];
        [recSTR release];
        recSTR=nil;             

    }
}

В этом случае протекает recSTR, и я перепробовал все перечисленные ниже решения, но ни один из них не помог Thanxзаранее

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Если ваш цикл выполняется огромное количество раз, используйте пул автоматического выпуска

loop {NSAutoreleasePool * innerPool = [[NSAutoreleasePool alloc] init];

...code goes here...

[innerPool release];

}

Это может помочь вам предотвратить утечку памяти

0 голосов
/ 04 июня 2011

получил решение утечки здесь

[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]

справиться с этим, и мы сделали

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