ipod中的内存泄漏 - 使用乐器和iPod时100%泄漏

时间:2012-07-02 12:56:07

标签: xcode memory-leaks

 -(NSString*)readTextColumnWithIndex:(int)index {
    char* val = (char *)sqlite3_column_text(statement,index);
    if (val==NULL) {
        return nil;
    }
    return [NSString stringWithUTF8String:val];
}

我在返回时有100%的泄漏[NSString stringWithUTF8String:val];。不知道如何解决它们。我相信只有alloc,retain等可能最终导致内存泄漏。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

[NSString stringWithUTF8String:val]是创建泄漏对象的语句 - 您需要查看接下来会发生什么。

您是否保留NSString某处返回的readTextColumnWithIndex:

答案 1 :(得分:0)

-(NSDictionary*)loadDataRow:(SqlQuery*)q {

    return [NSDictionary dictionaryWithObjectsAndKeys:      [NSString stringWithFormat:@"%d",[q readIntColumn]],
        @"TOCID",[q readTextColumn],@"SubChapter_Name",[q readTextColumn],
        @"HtmlFileName",[q readTextColumn],@"ImageName",[q readTextColumn],
        @"RefsTitleSection",[NSString stringWithFormat:@"%d",
                             [q readIntColumn]],@"PageId",
        nil];

}

这就是它所在的地方。 readIntColumn依次调用readTextColumnWithIndex并将NSDictionary返回给调用者方法

chap_Arr = nil;
while([query step]) {
    ChapName = [query readTextColumn];
     chap_Arr = [mData objectForKey:ChapName];
    if (!chap_Arr) {
        chap_Arr = [[[NSMutableArray alloc] init] autorelease];
        [mData setObject:chap_Arr forKey:ChapName];
    }

    [chap_Arr addObject:[self loadDataRow:query]];

}

我不知道如何释放chap_Arr,因为它在循环中。我在dealloc中有一个RELEASE_SAFELY。