仪器内存泄漏

时间:2009-08-02 19:46:37

标签: iphone memory-leaks uikit

我的代码中出现了很多泄漏,但没有任何漏洞指向我的任何代码(它们都是UIKit方法)。

我正在运行3.0。

有人能告诉我如何弄清楚这些泄漏的来源吗?

3 个答案:

答案 0 :(得分:1)

请注意如何解释有关泄漏发生位置的信息。例如,泄漏“占位符”字符串并不罕见 - 默认字符串在对象构造的早期分配,然后通常由您自己的自定义代码覆盖。虽然您没有直接分配占位符,但执行需要正确处理覆盖。换句话说,泄漏是可以避免的,它们是你的错,可以这么说。

但是,SDK中存在一些泄漏。例如,UIWebView肯定会泄漏一点。

你能告诉我们泄漏的调用堆栈吗? (仪器/视图/扩展详细信息以查看堆栈。

答案 1 :(得分:0)

感谢您提供帮助。

我正在做的就是在这里加载UITableView。但我确实调用了一个asyncimageview类进行图标加载,并使用Singleton类作为数据源。

无论如何,每种类型的所有泄漏(即 GSEVENTs )都会报告完全相同的细节。未显示所有细节的项目不会报告我的任何类或方法BTW。

以下是快照:

link text

我在某处读到UIAccelerometer(我需要使用)中可能导致 GSEVENT 问题的错误。

我将我的cellforrow配对到最低限度,没有任何额外的类(除了单身人士)。那时必须是单身人士。我几乎使用TheElements示例代码来构建该类。

这是我的cellForRowAtIndexPath现在(即使有这个骷髅,app仍然会泄漏,即使在滚动时):

static NSString *myCell = @"myCell";
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:myCell];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:myCell] autorelease];
}
UILabel *l=[[[UILabel alloc] initWithFrame:CGRectMake(10,10,200,16)] autorelease];
l.backgroundColor=[UIColor blackColor];
l.font=[UIFont boldSystemFontOfSize:15];
l.textColor=[UIColor whiteColor];
l.text=[(NSDictionary *)[[News sharedNews].newsArray objectAtIndex:indexPath.row] objectForKey:@"text"];
[cell.contentView addSubview:l];

return cell;

答案 2 :(得分:0)

原来是加速度计。我把它取下来,泄漏消失了。