Objective-C практики кодирования делегатов - PullRequest
1 голос
/ 07 июля 2010

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

Спасибо

1 Ответ

1 голос
/ 07 июля 2010

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

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

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

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

...