如何解决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)];
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)] autorelease];
cat.catThumb = [UIImage imageWithData:dataForCachedImage];
, 好的..解决了它!...问题是catThumb没有在Category类中发布。就是这样!,不需要其他修改...反正,谢谢大家!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。