(gdb) bt
#0 0x302ac924 in ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ ()
#1 0x92077e3b in objc_exception_throw ()
#2 0x302d6ffb in -[NSObject doesNotRecognizeSelector:] ()
#3 0x3026e056 in ___forwarding___ ()
#4 0x3024a0a2 in __forwarding_prep_0___ ()
#5 0x00004ae9 in -[GameObject doesTouch:] (self=0xe893a0, _cmd=0x643ee, obj=0xe82e20) at /Users/aaa/Desktop/CPT/Game/Classes/GameObject.m:220
#6 0x00006e05 in -[StaticGrid checkTouchNearest:] (self=0xe82f20, _cmd=0x64ec3, obj=0xe893a0) at /Users/aaa/Desktop/CPT/Game/Classes/StaticGrid.m:62
#7 0x0000a393 in -[EAGLView touchesBegan:withEvent:] (self=0xe8dad0, _cmd=0x3199fa3c, touches=0x632c0b0, event=0xe14590) at /Users/aaa/Desktop/CPT/Game/Classes/EAGLView.m:459
#8 0x30910f33 in -[UIWindow _sendTouchesForEvent:] ()
#9 0x308faecb in -[UIApplication sendEvent:] ()
#10 0x309013e1 in _UIApplicationHandleEvent ()
#11 0x32046375 in PurpleEventCallback ()
#12 0x30245560 in CFRunLoopRunSpecific ()
#13 0x30244628 in CFRunLoopRunInMode ()
#14 0x32044c31 in GSEventRunModal ()
#15 0x32044cf6 in GSEventRun ()
#16 0x309021ee in UIApplicationMain ()
...
目前我有一个罕见的错误,我还不知道原因。我不确定在哪里看,所以我想问的是前五行(#0到#4)是什么意思?我知道它声称有一些错误,但是什么是“___forwarding___
”?
如果您对此有所了解,请提供帮助。非常感谢你。
答案 0 :(得分:20)
转发内容用于 uhm ... 转发消息。每个对象都可以轻松地将收到的消息转发给其他对象,请参阅优秀的tutorial by Scott Stevenson。当您的GameObject
收到不理解的消息时,会尝试转发该消息。如果没有实现转发,则调用doesNotRecognizeSelector
方法并获得异常。
详细说明可在NSObject
类的Apple documentation中找到:
为对象发送消息时 它没有相应的方法, 运行时系统给接收器 委派信息的机会 到另一个接收器。它代表了 通过创建NSInvocation消息 表示消息的对象和 发送接收器a forwardInvocation:包含的消息 这个NSInvocation对象为 论点。接收者的 forwardInvocation:方法可以 选择将消息转发给 另一个对象。 (......) NSObject的实现 forwardInvocation:只需调用 doesNotRecognizeSelector:方法;它 不转发任何消息。因此,如果 你选择不实施 forwardInvocation :,发送 对象无法识别的消息 提出例外。
至于你的错误,似乎GameObject
发送了一些它不理解的消息。这可能是一个简单的拼写错误或更精细的内存管理错误,你必须给我们更多的信息。
答案 1 :(得分:2)
我要检查的第一件事是GameObject是否有-doesTouch:或+ doesTouch:方法。我不确定__forwarding是什么。您在控制台日志中看到了什么错误消息?