Instruments表示此方法存在内存泄漏,但我不知道在哪里

| 根据仪器,这些行存在内存泄漏
    cat.catName = (catName)?[NSString stringWithUTF8String:catName]:@\"\";
    NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 2) length: sqlite3_column_bytes(statement, 2)];           
    cat.catThumb = [UIImage imageWithData:dataForCachedImage];
    [dataForCachedImage release];
在以下代码中。 我还静态分析了代码..在此文件中没有发现问题。
-(NSMutableArray *)getAllItems{
NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease];

const char *sql = \"SELECT * FROM category ORDER by sort\";

sqlite3_stmt *statement;

int sqlresult = sqlite3_prepare(database, sql, -1, &statement, nil);

if (sqlresult == SQLITE_OK) {
    while (sqlite3_step(statement) == SQLITE_ROW) {
        Category *cat = [[Category alloc] init];

        char *catName = (char *)sqlite3_column_text(statement, 1);

        cat.catID = sqlite3_column_int(statement, 0);
        cat.catName = (catName)?[NSString stringWithUTF8String:catName]:@\"\";
        NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 2) length: sqlite3_column_bytes(statement, 2)];           
        cat.catThumb = [UIImage imageWithData:dataForCachedImage];
        [dataForCachedImage release];
        cat.catLock = sqlite3_column_int(statement, 3);
        cat.sort = sqlite3_column_int(statement, 4);
        cat.total = [self totalSMS:cat.catID];

        [items addObject:cat];

        [cat release];
    }
    sqlite3_finalize(statement);
}

else
{
    NSLog(@\"problem with the database\");
    NSLog(@\"%d\",sqlresult);
}
return items;}
有人可以指出吗? 谢谢     
已邀请:
        在第一个代码示例中,您不会释放
dataForCachedImage
。您可以将其更改为
cat.catName = (catName)?[NSString stringWithUTF8String:catName]:@\"\";
NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 2) length: sqlite3_column_bytes(statement, 2)];           
cat.catThumb = [UIImage imageWithData:dataForCachedImage];
[dataForCachedImage release];
要么
cat.catName = (catName)?[NSString stringWithUTF8String:catName]:@\"\";
NSData *dataForCachedImage = [[[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 2) length: sqlite3_column_bytes(statement, 2)] autorelease];           
cat.catThumb = [UIImage imageWithData:dataForCachedImage];
    
        好的..解决了它!...问题是catThumb没有在Category类中发布。就是这样!,不需要其他修改...反正,谢谢大家!     

要回复问题请先登录注册