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

在我的应用程序中,当我按下button时,首先调用该button的方法将我的文本字段文本直接分配给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"

有谁可以告诉为什么会发生这种情况,这种情况下的解决scheme是什么?

使用initWithObjects创build数组的所有对象应该是实际的对象。 在你的问题中没有足够的代码来知道latlongt是否也是对象。 他们?

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

如果这不是问题,请检查有关EXC_BAC_ACCESS SO问题以了解如何debugging它们。

在XCode中,进入菜单“编辑scheme”,select运行configuration并添加如下图所示的“NSZombieEnabled”,当你的应用程序崩溃时,它会为你提供更多的信息来帮助你debugging。

在这里输入图像说明

编辑

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

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

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

它可能是一个内存managemnet的情况下……你使用后发布的所有对象?

模拟器具有整个机器的内存空间…但是iPhone为单个应用程序定义了沙盒的内存。

大多数情况下,由于内存问题,您的应用程序崩溃,因为它不会在模拟器中崩溃,尝试释放所有在您完成分配的对象。

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

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

你需要释放他们

[myObject发布];

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

如果在开始解决这些内存pipe理问题后,您的应用程序开始减less崩溃,则表明您的方式正确。 所以继续释放。