Pergunta

(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 ()
...

Atualmente tenho um erro que ocorre raro que eu não sei a causa ainda. Eu não estou certo de onde para olhar, então o que eu quero perguntar é o que as cinco primeiras linhas (# 0 a # 4) média? Eu sei que ele afirma que existem alguns erros, mas o que são essas coisas como "___forwarding___"?

Se você tem algum conhecimento neste, por favor ajude. Muito obrigado.

Foi útil?

Solução

O material de encaminhamento é usado para uhm ... encaminhar mensagens. Cada objeto pode facilmente encaminhar as mensagens que recebe para alguns outros objetos, ver o excelente tutorial por Scott Stevenson . Quando seu GameObject recebe uma mensagem que não compreende, tenta encaminhá-lo. Se não há o encaminhamento de implementado, o método doesNotRecognizeSelector é chamado e você começa a exceção.

descrição detalhada pode ser encontrada no Apple documentação para a classe NSObject:

Quando um objeto é enviada uma mensagem para que tem método não correspondente, o sistema de execução dá o receptor uma oportunidade de delegar a mensagem para outro receptor. Delega a mensagem, criando um NSInvocation objeto representando a mensagem e enviando o receptor a forwardInvocation: mensagem contendo este objecto NSInvocation como o argumento. O receptor é forwardInvocation: método pode então optar por encaminhar a mensagem para um outro objecto. (...) implementação de NSObject forwardInvocation: simplesmente invoca o doesNotRecognizeSelector: método; isto não encaminha mensagens. Assim, se você optar por não implementar forwardInvocation :, envio mensagens não reconhecidos a objetos vai exceções aumento.

Quanto ao seu erro, parece que o GameObject é enviado alguma mensagem que não compreende. Este pode ser um simples erro de digitação ou algo mais sutil como erro de gerenciamento de memória, você tem que nos dar mais informações.

Outras dicas

A primeira coisa que gostaria de verificar é se GameObject tem uma -doesTouch: ou + doesTouch: método. Eu não sei o que __forwarding ... é. Que mensagem de erro você vê no log de console?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top