SQLite + проблемы управления памятью - PullRequest
0 голосов
/ 20 октября 2010

У меня есть база данных SQLite, содержащая данные изображения в виде BLOB, и я использую следующий код для установки свойств объекта, но у меня возникают серьезные проблемы с памятью данных, особенно на data и w.wineImage объекты, даже если кажется, что я все правильно выпускаю ...

if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {

            while(sqlite3_step(selectstmt) == SQLITE_ROW) {
                Wine *w = [[Wine alloc] init];  

                w.wineId = sqlite3_column_int(selectstmt, 0);
                w.wineName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];

                NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 2) length:sqlite3_column_bytes(selectstmt, 2)];

                if([data length] < 10){                     
                    UIImage *noImage = [UIImage imageNamed:@"no_image.png"];                
                    w.wineImage = noImage;
                    [noImage release];
                    [data release];
                } else {
                    UIImage *wineBottle = [[UIImage alloc] initWithData:data];
                    w.wineImage = wineBottle;
                    [wineBottle release];
                    [data release];
                }           

                w.price = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 3)];


                [wineArray addObject:w];
                //w=nil;


                [w release];

            }

            sqlite3_close(database);

1 Ответ

0 голосов
/ 20 октября 2010

Вы выпускаете noImage, но вы создали его из imageNamed, который уже автоматически выпущен.

Я не знаю, поможет ли это вашей проблеме, но вам определенно не следует это делать:)

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