线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x30000008)生成问题
我在模拟器上运行一个应用程序的问题。 问题:
线程1中的objc_msgSend发生EXC_BAD_ACCESS。
截图:
在我的应用程序中,我有多个ViewController
。 当我点击后退button的UINavigationBar
然后这种types的问题产生,我不能解释我的问题,因为所有的function正常工作。
例如: –
1 – fitstVController
(正常工作)
=>它有UITableView,当我点击特定的行,那么它会在另一个UIViewController(SecoundViewController)
2 – SecoundViewController
(正常工作)
=>它有UITableView和UIActionSheet。 当我selectUiActionSheet的button时,另一个UIViewController(ThirdViewController)打开
3 – ThirdViewController
(正常工作)
=>它有UITableView和多个UIPickerView。 但这里有问题,我不能回到以前的UIViewController(SecoundViewController)。 =>当我这样做然后EXC_BAD_ACCESS(代码= 1,地址= 0x30000008)问题产生。
简而言之,当您释放分配给已经释放的对象的内存时,就会出现这种types的问题。 很可能,这种types的问题是在您回到以前的UIViewController
(或其他情况)时生成的。
另外,我build议阅读以下链接以获得更全面的解释:
仓鼠商场档案:所以你坠毁在objc_msgSend()
设置一个exception断点意味着一旦exception发生,Xcode将立即停止执行。 这不是完全万无一失的,但这通常会导致应用程序违反导致问题的代码行。
这使得它更容易追踪问题的根源 – 尽pipe堆栈跟踪是诊断问题的明确方式,但它往往太详细,不能太多使用(特别是如果像我一样,你不是一个编译器专家。 )
要进行设置,请单击“导航器”面板中的“ Breakpoints
符号,然后单击底部的“ +
button。 然后从select列表中selectAdd Exception Breakpoint
和Objective-C
。
正如@TimD已经正确地指出的那样,你可以设置一个exception断点 ,它将突出显示违规的代码行(而不是试图破译汇编程序或手动尝试识别问题的出处)。 和往常一样,在诊断这些内存问题的时候,你应该总是启用僵尸 。 最后,在非ARC代码中尤为重要,您应该通过静态分析器运行您的代码,因为在那里可以识别许多与内存相关的问题。 您应该始终确保从静态分析器中没有任何警告,因为它总是指出关键的编程错误。
- 在屏幕上的不同点上渲染多个纹理,而不使用点精灵
- iOS 7的UITableView didSelectRowAtIndexPath pushViewController以编程方式,animation问题
- iOS UITableView滚动到部分的底部
- 当焦点从UITextField和UIWebView更改时,如何避免键盘隐藏和显示?
- SceneKit视图呈现向后
- NSURLSession使用绑定stream上传后台文件
- 将button添加到UITableViewCell的附件视图
- Soundcloud iOS API – 从链接播放声音
- UIScrollView断开和停止滚动与OpenGL呈现(相关CADisplayLink,NSRunLoop)