2010-09-24 48 views
0

想象我有一个主视图,在我所到的“AddSubview”方法的调用,像这样:问题上iphone

[mainView addsubview:secondView]; 

...在这第二种观点,我有一个searchBar,用适当的代码来显示UI键盘,输入一些文本,在应用程序中使用它,最后关闭UI键盘。 好的。

当程序的这一部分完成后,我所说的“AddSubview”方法中的第二时间,如下所示:

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

当这样做时,第二视图中消失,并且通过所述第三取代一。 但... 第二个视图使用的内存未被释放。 而且,更重要的是,UIKeyboard(大约800 Ko)使用的内存在我退出应用程序之前不会被释放,并且即使在我用第三个视图替换第二个视图时仍保持活动状态。

那么,有没有办法正确释放UI键盘使用的内存? (精度:在上面的代码中,3个UIviews都被分成了3个名为ManView,SecondView和ThirdView的类文件,它们分别对应于NIB文件中的3个UIviews对象。在每个文件中,但是,显然,它从来没有被调用...)

回答

0

由于KiranThorat指出,addSubview保留看法,所以一定要自己动手正确地释放。确保你的视图在dealloc方法中发布任何子视图。

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

1

你是如何创建第二个视图.. 当你添加subView它保留,当你删除它释放它自我。

当您创建secondView时,请尝试使用Autorelease。 或 从超级视图中移除后释放secondView ....在释放视图之前检查视图是否为零。所以 如果它被释放它不会崩溃的应用程序。