0

我已经将一个视图控制器导航到另一个视图控制器,但是当我多次导航时,我的应用程序显示内存泄漏,我使用 NSZombie 检测运行应用程序,显示“任务_for_pid 权限不足(LeakAgent)”。它已启用 ARC(xcode 4.2,iOS5)请帮助.......

我的代码在这里:

self.locationMapDetail = [[LocationMapDetail alloc] init];  //14.3% Leak
self.locationMapDetail.objItem = [self.parsedItems objectAtIndex:selectedIndex]; //5.7% Leak       
[self.navigationController pushViewController:locationMapDetail animated:YES]; //80.3% Leak
self.locationMapDetail = nil;
self.locationMapDetail.objItem = nil;
4

2 回答 2

0

您必须在将其设为 nil 之前释放对象。类似于

[self.locationMapDetail release];
self.locationMapDetail = nil;

如果您不使用 ARC,您应该为您分配的所有对象执行此操作。

在强指针的情况下,即使您释放对象,您也可能无法有效地释放它,或者它可能只是虚拟释放,因为强指针只有在强指针的所有引用都已释放时才能释放。发生这种情况是因为有时目标可能具有指向已声明变量的强指针引用。

另请提及您用于创建变量的方法..(viewDidLoad 或 viewWillAppear)。建议在 viewDidLoad 中创建它。

于 2012-05-12T06:25:33.067 回答
0

我也遇到了同样的问题,我花了将近 2 天的时间解决了这个问题。终于得到了解决方案。确保您的配置文件方案处于 DEBUG 模式而不是 RELEASE。这将解决问题。

于 2013-08-29T09:50:35.583 回答