У меня есть объект, который пересылает полученные сообщения. Он не реализует пересылку их другим объектам с помощью forwardInvocation
. Однако methodSignatureForSelector
не всегда будет возвращать допустимую сигнатуру метода в определенное время из-за того, как организована программа. Как я могу проглотить исключение, созданное из-за отсутствующей подписи метода? Переопределение doesNotRecognizeSelector
не работает. Спасибо.
Ласточка не распознает исключение селектора из вызова NSInvocation forwardInvocation
Ответы (1)
Вы должны сгенерировать некоторую сигнатуру (пусть даже фиктивную, например, v@:
, сигнатуру метода, который возвращает void
и не принимает аргументов), а затем не забудьте ничего не делать, когда он дойдет до forwardInvocation:
.
person
newacct
schedule
05.06.2013
Не могли бы вы опубликовать пример кода для этого... изо всех сил пытаясь сделать то же самое.
- person unom; 01.04.2014
@unmircea: По сути, в вашем методе
methodSignatureForSelector:
, если вы решите проглотить вызов селектора, но у вас нет подписи, верните [NSMethodSignature signatureWithObjCTypes:"v@:"]
. Затем в вашем методе forwardInvocation:
проверьте то же условие на селекторе для проглатывания, которое вы использовали в methodSignatureForSelector:
, и, если оно выполнено, просто вернитесь и больше не обрабатывайте.
- person newacct; 01.04.2014