应用程序只在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数组的所有对象应该是实际的对象。 在你的问题中没有足够的代码来知道lat
和longt
是否也是对象。 他们?
如果它们不是,用[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崩溃,则表明您的方式正确。 所以继续释放。