【发布时间】:2011-06-08 15:22:59
【问题描述】:
我自己解决了大部分内存泄漏问题,但这一个在 imo 中相当困难。发生以下情况。我需要在表格视图中从 facebook 加载信息,此表格视图具有刷新功能。这个 tablview 中的所有行都是从一个数组中加载的,这个数组由需要排序的数据对象组成。我的代码看起来像这样(我已经剪掉了不相关的部分)。
这部分会遍历来自 facebook 的结果并将其放在一个数组中
- (void)request:(FBRequest*)request didLoad:(id)result
{
if ([result isKindOfClass:[NSDictionary class]]) {
//Setting single result into result dictionary
NSArray *resultArray = [result allObjects];
result = [resultArray objectAtIndex:0];
for(int i=0; i<13; i++){
//Set all retrieved data in containerArray
Post *newPost = [[[Post alloc] init] autorelease];
newPost.created_time = created_time1;
newPost.message = message1;
newPost.picture = picture1;
newPost.fbSource = fbSource1;
[containerArray insertObject:newPost atIndex:i];
//Reload the table in the tableView
[self.tableView reloadData];
}
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"created_time"
ascending:NO] autorelease ];
sortedArray = [containerArray sortedArrayUsingDescriptors:[NSMutableArray arrayWithObject:sortDescriptor]];
[sortedArray retain];
}
}
到目前为止,这可行并且没有内存泄漏。但是一旦调用了刷新函数。该功能将再次运行。然后造成内存泄漏,我想可能是由于 [sortedArray retain] 函数。但是没有这个函数,数组不会加载,我得到一个 EXC_BAD_ACCESS。如果我释放 sortedArray,我也会得到 EXC_BAD_ACCESS,因为 sortedArray 已经消失并且无法调用。
有人知道如何解决这个问题吗?谢谢!
【问题讨论】:
标签: iphone objective-c ios memory-leaks retain