Ласточка не распознает исключение селектора из вызова NSInvocation forwardInvocation

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


person user26691    schedule 05.06.2013    source источник


Ответы (1)


Вы должны сгенерировать некоторую сигнатуру (пусть даже фиктивную, например, v@:, сигнатуру метода, который возвращает void и не принимает аргументов), а затем не забудьте ничего не делать, когда он дойдет до forwardInvocation:.

person newacct    schedule 05.06.2013
comment
Не могли бы вы опубликовать пример кода для этого... изо всех сил пытаясь сделать то же самое. - person unom; 01.04.2014
comment
@unmircea: По сути, в вашем методе methodSignatureForSelector:, если вы решите проглотить вызов селектора, но у вас нет подписи, верните [NSMethodSignature signatureWithObjCTypes:"v@:"]. Затем в вашем методе forwardInvocation: проверьте то же условие на селекторе для проглатывания, которое вы использовали в methodSignatureForSelector:, и, если оно выполнено, просто вернитесь и больше не обрабатывайте. - person newacct; 01.04.2014