直到iOS 7.1推出前,我的应用从未崩溃。现在在任何removeFromSuperview
方法中都会崩溃。例如:我有视图控制器,当我想要删除一个视图控制器时,我会先删除它的所有子视图,然后从堆栈中删除(堆栈:我将视图控制器存储在其中,以加载新内容和加载先前的内容):
for (UIView *subView in [contentVc subviews])
[subView removeFromSuperview];
我遇到了以下问题:
-[CALayer retain]: message sent to deallocated instance
请问这是什么意思?
[actual removeFromParentViewController];
这是一种好的方法吗?它会释放整个视图控制器及其子视图吗?因为我使用 removeFromSuperview 时,我的应用程序崩溃了。我不明白在 iOS 7.1 中发生了什么变化。
如果我想要移除一个 viewController
的所有子视图,但不想使用 removeFromSuperview
,也不想移除我的 ViewController
(如果我只想添加新的子视图,并删除当前内容),该怎么做呢?
更新:
有时会出现崩溃:
[myactualviewcontroller.view removeFromSuperview];
-[CALayer retain]: message sent to deallocated instance
为什么???
有时,如果我尝试从视图控制器视图中删除主子视图,它会崩溃:
[mainView removeFromSuperview]
(mainView是单个UIView,添加到vc.view中)
更新2:(详细说明)
所以,我有一个容器视图。 我将UIViewController.view
添加到此容器中。 然后,我将视图添加为UIViewController.view
的子视图。 这个视图不是本地的uiview,我的意思是,它被声明为implementation { UIView * mainView }
。当我的UIViewController被释放时,在其- (void) dealloc { [mainView removeFromSuperview]; [mainView release] [super dealloc];}
中,执行mainView removeFromSuperview时,我的应用程序崩溃了。