Вопрос

(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___"?

Если у вас есть какие-то знания в этом, пожалуйста, помогите.Большое вам спасибо.

Это было полезно?

Решение

Материал для пересылки используется для хм… пересылка сообщений.Каждый объект может легко пересылать полученные им сообщения некоторым другим объектам, см. учебное пособие Скотта Стивенсона.Когда ваш GameObject получает сообщение, которое не понимает, и пытается его переслать.Если переадресация не реализована, то doesNotRecognizeSelector вызывается метод, и вы получаете исключение.

Подробное описание можно найти в Документация Apple для NSObject класс:

Когда объекту отправляется сообщение, для которого у него нет соответствующего метода, система выполнения предоставляет получателю возможность делегировать сообщение другому получателю.Он делегирует сообщение, создавая NSInvocation объект, представляющий сообщение и отправляющий получателю forwardInvocation:сообщение, содержащее этот объект NSInvocation в качестве аргумента.Адресат Переадресационный вызов:затем метод может выбрать пересылку сообщения другому объекту.(...) Реализация NSObject для forwardInvocation:просто вызывает Не распознает селектор:способ;это не пересылает никаких сообщений.Таким образом, если вы решите не реализовывать forwardInvocation: , отправка нераспознанных сообщений объектам приведет к возникновению исключений.

Что касается вашей ошибки, то, похоже, что GameObject получает отправленное какое-то сообщение, которое он не понимает.Это может быть простая опечатка или что-то более тонкое, например ошибка управления памятью, вам придется предоставить нам больше информации.

Другие советы

Первое, что я бы проверил, это имеет ли GameObject -doesTouch:или +дотронуться:способ.Я не уверен, что такое __пересылка...есть.Какое сообщение об ошибке вы видите в журнале консоли?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top