-(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等可能最终导致内存泄漏。非常感谢任何帮助。
答案 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。