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

应用程序崩溃仅在iPhone设备上,不在模拟器中,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,在我的应用程序中,当我按下按钮时,该按钮调用的方法首先将我的文本字段文本直接分配给NSArray对象,如: val = [[NSArray alloc] initWithObjects: nameText.text, cellText.text, p_emText.text, p_cnfrmText.text, s_emText.text, s_cnfrmText.text,

在我的应用程序中,当我按下按钮时,该按钮调用的方法首先将我的文本字段文本直接分配给
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设备上运行它时,它会给出:
线程1:程序收到信号“EXC\u BAC\u ACCESS”


有人能告诉我为什么会发生这种情况,以及这种情况的解决方案是什么吗?

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

如果没有,请使用
[NSNumber numberWithFloa:
]包装它们


如果这不是问题,请检查有关
EXC\u BAC\u ACCESS
的SO问题,以了解如何调试它们

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

请查看此链接:。另外,在将所有textfield.text放入数组之前,获取它们的NSLog。可能其中一个已变为零。在XCode中,进入菜单“编辑方案”,选择正在运行的配置并添加“NSZombieEnabled”,如下图所示,当应用程序崩溃时,它将为您提供有关崩溃的其他信息,帮助您调试它

编辑


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

这可能是内存管理网的情况……您是否在使用完所有对象后释放了它们


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

最有可能的是,您的应用程序由于内存问题而崩溃,因为它在模拟器中没有崩溃,请尝试释放您在使用它们时分配的所有对象

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

MyCustomClass*myObject=[[MyCustomClass alloc]init]

您需要将它们作为

[肌对象释放]

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


如果在你开始解决这些内存管理问题后,你的应用程序开始崩溃,那么这表明你走上了正确的道路。所以请继续发布。

试着在这里发布您的完整代码。lat和LONG是字符串对象,val是NSArray,如问题中所述。我的应用程序不会在模拟器上崩溃,它只会在我的iphone设备上运行时随信号崩溃对您有好处。你把文本字段的日志拿走了吗?您必须知道,坏访问是与内存问题相关的崩溃;在所有textfield文本中,因此将不会为任何textfield文本分配nil。我已经在方法结束时发布了val(接收信号的位置),但问题仍然没有得到解决
2011-12-08 14:18:41.670 DMFoundation[1750:707]***-[CFString retain]:发送到解除分配实例0x1ed4b0的消息我按照您的建议得到了这条消息
显然是一些字符串问题。有些字符串不知何故被释放了。2011-12-08 14:18:41.670 DMFoundation[1750:707]***-[CFString retain]:发送到释放实例0x1ed4b0的消息我按照您的建议得到了这条消息每当按下按钮时,我都会将内存分配给val,在该按钮的方法结束时,我将val释放为:[val release];我还是有问题