有关iphone内存管理的问题

时间:2010-09-24 13:32:04

标签: iphone memory-management uikeyboard

想象一下我有一个主视图,我在其中调用了“AddSubview”方法,如下所示:

[mainView addsubview:secondView];

...在第二个视图中,我有一个searchBar,带有显示UIkeyboard的相应代码,键入一些文本,在应用程序中使用这个,最后关闭UIkeyboard。 确定。

当这部分程序完成后,我再次调用“AddSubview”方法,如下所示:

[secondView removeFromSuperview];
[mainView addsubview:thirdView];

完成后,第二个视图消失,并被第三个视图替换。 但... 第二个视图使用的内存不会被释放。 而且,更重要的是,UIkeyboard使用的内存(大约800 Ko)在我退出应用程序之前不会被释放,并且即使我用第三个视图替换第二个视图也会保持活动状态。

那么,有没有办法正确释放UIkeyboard使用的内存?

(精度:在上面的代码中,3个UI视图都是3个类文件中的子类,分别名为ManView,SecondView和ThirdView,它们分别对应于NIB文件中的3个UIview对象。在每个文件中我都放了“ dealloc“方法。但是,显然,它从未被调用过......”

2 个答案:

答案 0 :(得分:1)

如何创建secondView .. 当您添加subView时,它会保留,当您删除它时,将自行释放。

在创建secondView时尝试使用Autorelease。 要么 从superview中删除后释放secondView ....在释放之前检查视图是否为nil。所以 如果它已被释放,它不会使应用程序崩溃。

答案 1 :(得分:0)

正如KiranThorat指出的那样,addSubview会保留视图,因此请确保您自己正确发布。确保您的视图在dealloc方法等中发布任何子视图。

另外,在检查模拟器上的泄漏时,我发现看到一些UIKeyboard泄漏是正常的。这些不在设备上(至少在我的情况下)。