Iphone 转到后台时发送到解除分配实例的消息
我正在iOS7(iphone5s)上使用ARC和测试 我有一个导航控制器(a)和一个推式UIViewController(b)。b通过手动序列显示模式导航视图控制器(c)。c然后按下UIViewController(d) 现在我们有两个导航堆栈,一个根和一个模态 每当我转到后台时,我都要关闭模态导航视图控制器(c)及其所有子项 在UIViewController(b)中,我有以下代码:Iphone 转到后台时发送到解除分配实例的消息,iphone,objective-c,memory-management,uiviewcontroller,automatic-ref-counting,Iphone,Objective C,Memory Management,Uiviewcontroller,Automatic Ref Counting,我正在iOS7(iphone5s)上使用ARC和测试 我有一个导航控制器(a)和一个推式UIViewController(b)。b通过手动序列显示模式导航视图控制器(c)。c然后按下UIViewController(d) 现在我们有两个导航堆栈,一个根和一个模态 每当我转到后台时,我都要关闭模态导航视图控制器(c)及其所有子项 在UIViewController(b)中,我有以下代码: - (void)viewDidLoad { [super viewDidLoad]; [[NS
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(enteredBackground:)
name:UIApplicationDidEnterBackgroundNotification object:nil];
}
-(void)enteredBackground:(NSNotification *)notification{
if (self.presentedViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
当我进入后台时,如果我在C的rootViewController上,这可以很好地工作,但当我在D上时崩溃
2013-10-20 22:49:49.008 MyApp[2596:60b]***-[UIView发布]:发送到解除分配实例0x17036aa40的消息
我该如何解决这个问题?模态导航堆栈中的视图似乎正在发送
dealloc
,并且已经发布。在调试器中查看后,模态nvaigationcontroller(c)本身似乎仍然存在 我做了一个测试样本并检查了相同的场景,它不会在任何地方崩溃。请检查ViewController C和D中UIView类型的对象是否有任何版本。或者,您是否可以将代码发布到您正在执行上述所有操作的位置。在您要解除的视图控制器中的某些保留/释放代码中,这一定是个问题-请提供有关解除的控制器的更多代码此处没有保留/释放代码。我正在使用arc。我也没有在这些对象上声明和显式的弱属性或强属性。ARC并不意味着没有保留/释放:)您仍然需要定义强/弱引用(转换为保留或分配)。如果您不了解保留/发布的基本知识,我建议您在知道如何手动管理后使用MRC并转到ARC,这样您就不会犯基本错误。我理解。我是说因为arc,我没有明确的保留/释放。但是我没有对任何视图持有任何强/弱引用,除了storyboard所做的引用。@PRNDL Development Studio,您能找到解决方案吗?我在我身边也有同样的体验。我可以发布,但没有明确的发布或保留。我正在使用Arc。当我回到我的电脑时,我会发布代码。谢谢