У меня есть объект, который пересылает получающие сообщения. Он не реализует пересылку их другим объектам с использованием forwardInvocation
. Однако methodSignatureForSelector
не всегда будет возвращать действительную подпись метода в определенное время из-за способа организации программы. Как я могу проглотить исключение, генерируемое из недостающей сигнатуры метода? Переопределение doesNotRecognizeSelector
не работает. Благодарю.Swallow doesnotrecognizeselector исключение из NSInvocation forwardInvocation звонок
1
A
ответ
4
Вы должны сгенерировать подпись (даже если фиктивный один, например, [email protected]:
, сигнатура метода, который возвращает void
и не принимает никаких аргументов), а затем вспомнить ничего не делать, когда дело доходит до forwardInvocation:
.
Работает отлично ... спасибо. – user26691
Не могли бы вы привести пример кода для этого ... пытаясь сделать то же самое. – unmircea
@unmircea: В принципе, в методе 'methodSignatureForSelector:', если вы решите проглотить вызов для селектора, но не имеете подписи, верните '[NSMethodSignature signatureWithObjCTypes:" v @: "]'. Затем в методе 'forwardInvocation:' проверьте одно и то же условие на селекторе для проглатывания, которое вы использовали в 'methodSignatureForSelector:', и если оно выполнено, просто возвращайтесь и не обрабатывайте дальше. – newacct