2010-07-07 2 views
1

У меня есть некоторые методы кодирования с участием делегатов, о которых я не уверен. Прежде всего, если в протоколе делегата нет необязательных методов (все требуется), рекомендуется ли использовать respondsToSelector:, чтобы проверить, реализует ли этот объект делегат этот метод? И, во-вторых, мне нужно проверить, не делегирован ли делегат nil перед вызовом метода на нем? В моих кратких экспериментах вызов метода на объекте nil ничего не делает, но что здесь рекомендуется?Практика кодирования делегатов Objective-C

Благодаря

ответ

1

Прежде всего, если протокол делегата не имеет дополнительных методов (требуется все ), является его рекомендуются практики использовать respondsToSelector: для проверить, является ли объект делегата реализующих метод?

Если это необходимо, вы не должны его проверять. Требуется не так ли? Для дополнительных методов вам обязательно нужно проверить.

И, во-вторых, мне нужно проверить, не делегирован ли делегат нулю до , вызывая метод на нем? В моих коротких экспериментах вызов метода на ноль объект ничего не делает, но что такое ?

Да, ваши наблюдения верны. Отправка сообщений в нуль безвредна. Что касается лучших практик, если делегат равен нулю, вызывающий код вашего кода не заинтересован в том, какие методы делегата вы предоставляете, поэтому нет необходимости делать какие-либо дополнительные проверки там.

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