1

У меня есть объект, который пересылает получающие сообщения. Он не реализует пересылку их другим объектам с использованием forwardInvocation. Однако methodSignatureForSelector не всегда будет возвращать действительную подпись метода в определенное время из-за способа организации программы. Как я могу проглотить исключение, генерируемое из недостающей сигнатуры метода? Переопределение doesNotRecognizeSelector не работает. Благодарю.Swallow doesnotrecognizeselector исключение из NSInvocation forwardInvocation звонок

ответ

4

Вы должны сгенерировать подпись (даже если фиктивный один, например, [email protected]:, сигнатура метода, который возвращает void и не принимает никаких аргументов), а затем вспомнить ничего не делать, когда дело доходит до forwardInvocation:.

+0

Работает отлично ... спасибо. – user26691

+0

Не могли бы вы привести пример кода для этого ... пытаясь сделать то же самое. – unmircea

+1

@unmircea: В принципе, в методе 'methodSignatureForSelector:', если вы решите проглотить вызов для селектора, но не имеете подписи, верните '[NSMethodSignature signatureWithObjCTypes:" v @: "]'. Затем в методе 'forwardInvocation:' проверьте одно и то же условие на селекторе для проглатывания, которое вы использовали в 'methodSignatureForSelector:', и если оно выполнено, просто возвращайтесь и не обрабатывайте дальше. – newacct

 Смежные вопросы

  • Нет связанных вопросов^_^