gpt4 book ai didi

ios - ARC在Apple的UI库中的某个地方释放了我的对象

转载 作者:行者123 更新时间:2023-12-03 17:23:24 26 4
gpt4 key购买 nike

我有一个局部变量UINavigationConroller *nav。在声明之后不到10行,在同一方法中将其传递给[self presentViewController:nav animated:YES completion:nil](selfUIViewController)。我知道在这里传递nil是可以的,因为the documentation says it is

就在通过之前,一切都很好。但是,当它在那儿时,ARC对其进行了重新分配,当Apple的UI库中的某个调用[UINavigationController isKindOfClass:](大概是我的nav对象)时,应用程序便崩溃了。这是控制台输出:

2015-03-20 13:33:50.729 Now[9183:3980870] Presenting view controllers on detached view controllers is discouraged <MyViewController: 0x125042200>.
2015-03-20 13:33:50.730 Now[9183:3980870] *** -[UINavigationController isKindOfClass:]: message sent to deallocated instance 0x12601c6e0

我已经进入,退出并通过此类和汇编代码进行了几天的尝试,我会尽可能地进行谷歌搜索,并且似乎无法修复它。我剩下的唯一解决方案是在 [nav retain]之前调用 presentViewController,在之后立即调用 [nav release],但是ARC禁止这样做。这是一个庞大的旧项目,所以 我们不能只关闭ARC。

如何在使用完nav表单之前将其释放?

更新:

我已经使用Zombie探查器对此进行了检查。我发现它确实是 UINavigationController,并且确实在UIKit中被释放了:

最有说服力的是最上面的两行,它们显示了从分配的960B立即变为0:

我看起来很不典型,并为我抛出了危险信号。

最佳答案

尝试这个

[self.view.window.rootViewController presentViewController:navCon animated:YES completion:nil];

如果您的对象由于某种原因而被释放,请不要依赖它。而是依赖于窗口的根 Controller 。

关于ios - ARC在Apple的UI库中的某个地方释放了我的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com