2010-10-20 5 views
0

J'ai une base de données SQLite contenant des données d'image en tant que BLOB, et j'utilise le code suivant pour définir les propriétés d'un objet, mais je reçois des problèmes de mémoire majeurs avec data et w.wineImage objets, même si il semble que je suis tout correctement ... publieraiSQLite + problèmes de gestion de la mémoire

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); 

Répondre

0

vous publions noImage mais que vous avez créé à partir imageNamed qui est déjà autoreleased.

Je ne sais pas si cela aide votre problème mais vous ne devriez certainement pas le faire :)