【发布时间】:2011-01-05 10:14:08
【问题描述】:
我已经阅读了很多关于这个问题的信息,但我的似乎仍然有所不同。 所以据我了解,EXC_BAD_ACCESS 会出现内存管理问题。
问题是,我的似乎 (!:)) 不在那里。问题是,我简单地在 IB 中添加了一个按钮,圆角矩形,没有图像。我将它与我在课堂上定义的 IBACTION 连接起来。顺便说一下,这个方法什么都不做(!)。
无论如何,只要我点击按钮,应用程序就会崩溃,并显示“EXC_BAD_ACCESS”。
据我所知,我肯定不会过度发布任何东西。有什么问题?
有什么线索吗?
这是我的控制台日志:
Loading program into debugger…
sharedlibrary apply-load-rules all
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-148-79
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running…
[Switching to thread 11779]
[Switching to thread 11779]
(gdb) continue
2010-01-15 09:16:34.800 FlightControl1[1899:207] Table loaded
2010-01-15 09:16:35.200 FlightControl1[1899:207] 23
2010-01-15 09:16:35.350 FlightControl1[1899:207] debug
Program received signal: “EXC_BAD_ACCESS”.
(gdb)
这是我上栈后得到的:
#0 0x31ec3ebc in objc_msgSend ()
#1 0x33605784 in -[UIApplication sendAction:to:from:forEvent:] ()
#2 0x336056ec in -[UIApplication sendAction:toTarget:fromSender:forEvent:] ()
#3 0x336056b4 in -[UIControl sendAction:to:forEvent:] ()
#4 0x3360530c in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#5 0x33605f8c in -[UIControl touchesEnded:withEvent:] ()
#6 0x335fd9ac in _UIGestureRecognizerUpdateObserver ()
#7 0x30da1830 in __CFRunLoopDoObservers ()
#8 0x30de9346 in CFRunLoopRunSpecific ()
#9 0x30de8c1e in CFRunLoopRunInMode ()
#10 0x332e7374 in GSEventRunModal ()
#11 0x335adc30 in -[UIApplication _run] ()
#12 0x335ac230 in UIApplicationMain ()
#13 0x000027a8 in main (argc=1, argv=0x2ffff4d8) at /Users/SomePath/main.m:14
【问题讨论】:
-
你能粘贴到控制台日志吗?
-
还要注意,IBACTION 本身只不过是 IB 用于查找项目的占位符。预处理后看代码,IBACTIONs是不存在的
-
我将控制台日志添加到问题中。 @kevin:老实说,我不确定该怎么做。
-
在您单击按钮之前,执行按钮操作的对象很可能已经被释放。您可以尝试在其 -dealloc 及其按钮操作方法中添加一个 NSLog 调用来验证它。还为 objc_exception_throw 和 -[_NSZombie methodSignatureForSelector:] 启用断点(并启用 NSZombies)也会有所帮助。
-
@ (gdb) 提示符下,输入“返回”命令。这将显示错误之前发生的事情的堆栈跟踪。确定错误发生位置的简单第一步。
标签: iphone uibutton exc-bad-access