等待iPhone内存管理

等待iPhone内存管理,iphone,exc-bad-access,Iphone,Exc Bad Access,当我在模态视图中显示另一个控制器时,我接收到EXC_BAD_访问。显然,当我访问该控制器的viewDidLoad时,有些变量是“无效的”。但是,如果我等待20秒,那么控制器将正常加载 我不熟悉iPhone。很抱歉问了一个新手问题。我写了这篇博客,介绍了一些追踪这些问题的技巧: 结果是,您可以在一种模式下运行应用程序,该模式将检测到许多常见的内存问题。通常,只需运行调试器就可以跟踪EXC\u BAD\u访问。不要设置任何断点,只需在debug(Command-Y)中运行,并执行通常会导致应用程序

当我在模态视图中显示另一个控制器时,我接收到EXC_BAD_访问。显然,当我访问该控制器的viewDidLoad时,有些变量是“无效的”。但是,如果我等待20秒,那么控制器将正常加载


我不熟悉iPhone。很抱歉问了一个新手问题。

我写了这篇博客,介绍了一些追踪这些问题的技巧:


结果是,您可以在一种模式下运行应用程序,该模式将检测到许多常见的内存问题。

通常,只需运行调试器就可以跟踪EXC\u BAD\u访问。不要设置任何断点,只需在debug(Command-Y)中运行,并执行通常会导致应用程序崩溃的操作。调试器将在代码中发生崩溃的位置停止。然后,您可以查看调试器中的线程列表(左上视图),并查看有效代码的最后一行。灰色字体的行是来自内部代码的行。全黑色字体的行是您的代码。单击代码行的最后一行(堆栈中最上面的一行),您可以看到它失败的地方。然后,您可以将鼠标悬停在该行中的变量上,以查找尚未初始化的变量。这应该会让您了解正在发生的事情。

当您说“获取”控制器的viewDidLoad时,您的意思是该方法由应用程序自动调用还是显式调用?EXC\u BAD\u访问的对象是什么?一些代码会很有用。嗨-我尝试在名为Root的控制器中使用全局NSString变量。我创建/设置了另一个名为View inside Root.m的控制器。我给根目录中的NSString赋值,显示视图,然后在viewDidLoad中加载视图时尝试访问NSString。在离开根目录之前和进入视图时,我设置了断点来检查NSString的值。有时它具有相同的值,有时则表示无效。下一条评论中还有更多内容……我想我通过将所有处理移到视图中解决了这个问题。似乎NSString可能因为填充太多而超出范围。你遇到过吗?另外,我注意到在模拟器和设备上,结果也不一致。谢谢你的意见。谢谢你,马特。我会试试这个,让你知道我发现了什么。快速提问-似乎在模拟器中运行我的应用程序与在设备中运行会产生不一致。你有什么见解吗?谢谢。我之前见过两者之间的不一致,但你必须详细说明你具体看到的不一致。嗨,马特-例如,在模拟器中,应用程序不会像在真实手机上那样出现NSString问题。我有一个跟踪分数的应用程序,在模拟器中,我可以输入我请求的完整数据-填充5个数组,大约10个变量,然后将它们存储在核心数据中。模拟器没有问题,但在我使用真实设备一半之前就停止了。维尔德。我将在这两方面再试试你的建议,看看错在哪里。一天结束时,我写了这封信,这样我就可以把它弄明白了。:-)