Iphone 如何仅在设备上调试EXC_BAD_访问

Iphone 如何仅在设备上调试EXC_BAD_访问,iphone,ipad,device,exc-bad-access,Iphone,Ipad,Device,Exc Bad Access,我有一些代码返回一个包含2个对象的结构(声明为id)。 当尝试使用其中一个对象时,我获得了EXC_BAD_访问权限,应用程序崩溃。这只发生在设备(ipad)上,而不是在模拟器中 我已经将NSZombieEnabled设置为YES,但是没有信息写入控制台。 我不知道我在Xcode 4中使用一个工作区,一个项目用于我的应用程序,另一个项目用于构建应用程序中使用的库,这是否是一个问题。EXC_BAD_访问发生在第二个项目中,所以我不知道NSZombieEnabled是否适用于第二个项目 我如何解决这个

我有一些代码返回一个包含2个对象的结构(声明为
id
)。 当尝试使用其中一个对象时,我获得了EXC_BAD_访问权限,应用程序崩溃。这只发生在设备(ipad)上,而不是在模拟器中

我已经将NSZombieEnabled设置为YES,但是没有信息写入控制台。 我不知道我在Xcode 4中使用一个工作区,一个项目用于我的应用程序,另一个项目用于构建应用程序中使用的库,这是否是一个问题。EXC_BAD_访问发生在第二个项目中,所以我不知道NSZombieEnabled是否适用于第二个项目

我如何解决这个问题?特别是在我看来,它只发生在设备上(甚至在模拟器上按计划进行),它在第二个项目中


编辑:出现EXC_BAD_访问的地方,在sortRange.lower上的第62行–

在您尝试访问某个对象之前,它似乎已自动删除。由于iPad的内存比运行它的电脑要少,所以它的发布速度更快,这就是为什么它不可用的原因。试着在得到错误的那一行之前记录这两个对象,看看其中哪一个是问题所在,然后追溯到它的起源并以某种方式保留它。也不要忘了在你使用完之后发布它。一些示例代码可能会很有用。

在您尝试访问某个对象之前,该对象似乎已自动删除。由于iPad的内存比运行它的电脑要少,所以它的发布速度更快,这就是为什么它不可用的原因。试着在得到错误的那一行之前记录这两个对象,看看其中哪一个是问题所在,然后追溯到它的起源并以某种方式保留它。也不要忘了在你使用完之后发布它。一些示例代码可能会很有用。

NSZombieEnabled只在模拟器上工作,而不在设备上工作,因此它可能隐藏了问题。运行产品>分析(⇧⌘B) 寻找线索。不看代码就很难说得更多。正如Mihai所说,您的对象可能被过度释放,这是EXC_BAD_访问最常见的原因。

NSZombieEnabled只能在模拟器上工作,而不能在设备上工作,因此它可能隐藏了问题。运行产品>分析(⇧⌘B) 寻找线索。不看代码就很难说得更多。正如Mihai所说,您的对象可能被过度释放,这是EXC_BAD_访问最常见的原因。

I在通过似乎创建对象的方法返回对象后,立即记录这些对象,然后我获得EXC_BAD_访问权。尝试以
return[your object retain]的形式返回对象。这有用吗?如果是,请不要忘记执行
[yourObject release]完成后。问题是该方法返回一个无法保留的结构,但它包含2个对象。另外,返回结构的方法位于NSPredicate的类别扩展中,在调试时,我似乎无法进入该方法。创建上述两个对象的代码是什么?你能把它贴在这里吗?你能访问它的源代码吗?当EXC_BAD_访问发生时,在第62行的
sortRange.lower
I记录对象,在它们通过似乎创建它们的方法返回后,我立即获得EXC_BAD_访问权。尝试将对象返回为
return[yourObject retain]。这有用吗?如果是,请不要忘记执行
[yourObject release]完成后。问题是该方法返回一个无法保留的结构,但它包含2个对象。另外,返回结构的方法位于NSPredicate的类别扩展中,在调试时,我似乎无法进入该方法。创建上述两个对象的代码是什么?你能把它贴在这里吗?你能访问它的源代码吗?当EXC\u坏访问发生时,在第62行的
sortRange.lower