繁体   English   中英

应用程序仅在iPhone设备上崩溃而不在模拟器中崩溃

[英]App crash only on iPhone Device and not in Simulator

在我的应用程序中,当我按下按钮时,调用该按钮的方法首先将我的文本域文本直接分配给NSArray对象,如:

 val = [[NSArray alloc] initWithObjects: nameText.text, cellText.text, p_emText.text, 
                                      p_cnfrmText.text, s_emText.text, s_cnfrmText.text,
                                      emailText.text, ecnfrmText.text, lat, longt,  
                                      nil];

当我在模拟器上运行我的应用程序时,没有发生应用程序崩溃,但是当我在我的iPhone设备上运行它时,它给出: Thread 1: program recieved signal "EXC_BAC_ACCESS"

谁能说出为什么会发生这种情况,以及这种情况下的解决方案是什么?

在XCode中,转到菜单“编辑方案”,选择正在运行的配置并添加'NSZombieEnabled',如下图所示,当您的应用程序崩溃时,它将为您提供有关崩溃的额外信息,以帮助您进行调试。

在此输入图像描述

编辑

请注意,当您的应用程序调试结束时,请删除NSZombieEnabled命令,因为它会影响应用程序性能

使用initWithObjects创建数组所涉及的所有对象都应该是实际对象。 你的问题中没有足够的代码来知道latlongt是否也是对象。 是吗?

如果不是,请用[NSNumber numberWithFloa:<# the float #> ]包裹它们。

如果这不是问题,请检查有关EXC_BAC_ACCESS SO问题以学习调试它们。

很可能你的应用程序由于内存问题而崩溃,因为它没有在模拟器中崩溃,尝试释放你在完成它们时分配的所有对象。

如果您有分配和初始化为的自定义对象;

MyCustomClass * myObject = [[MyCustomClass alloc] init];

你需要释放它们

[myObject release];

特别是如果他们有成员分配大尺寸图像或其他类型的数据。

如果您的应用在开始解决这些内存管理问题后开始崩溃,则表明您的方法正确。 所以继续发布。

从模拟器中删除应用程序/从Mac删除构建文件/从XCode清除产品,然后再在模拟器中运行它。 检查它现在是否在模拟器中崩溃。

看一下这个链接: 收到EXC_BAD_ACCESS信号 另外,在将它们放入数组之前,先取出所有textfield.texts的NSLog。 可能是其中之一已成为零。

可能是内存管理的情况...使用完所有对象后,您是否已将它们释放了?

模拟器具有整个机器的存储空间......但iphone具有针对单个应用程序的沙箱的已定义内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM