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

我在返回[NSString stringWithUTF8String:val];時有100%泄漏。不知道如何解決它們。我相信只有alloc,retain等最終可能會導致內存泄漏。任何幫助是極大的讚賞。ipod中的內存泄漏 - 使用樂器和iPod時100%泄漏

+0

會這麼做... – Anand

+0

但你沒有,是嗎。 –

回答

0

[NSString stringWithUTF8String:val]是創建泄漏對象的語句 - 您需要看看接下來會發生什麼。

您是否保留NSStringreadTextColumnWithIndex:返回某處?

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。