MacRuby: соответствует протоколам - PullRequest
3 голосов
/ 07 января 2012

Я новичок в MacRuby (и Objective-C).Читая некоторую документацию по Какао, я постоянно сталкиваюсь с частями, в которых упоминаются делегаты, соответствующие протоколам.До сих пор я продолжаю устанавливать свой AppDelegate в качестве протокола для всего, что говорит о делегате, но я не уверен, соответствую ли я необходимым протоколам или нет.

Что мне нужнознать о протоколах и как мне соответствовать им в моем приложении?

1 Ответ

3 голосов
/ 07 января 2012

Вам необходимо понять, что такое [формальный] протокол Objective-C, включая то, что он определяет обязательные и / или дополнительные методы. См. Документацию Apple Objective-C. Протоколы - это ограниченная форма множественного наследования, при которой наследуется только поведение, но не состояние. Другие языки могут называть это interface или mix-in.

Соответствие протоколу означает, что ваш класс реализует все обязательные методы и, возможно, ни один, некоторые или все дополнительные методы.

Как правило, протокол используется для делегатов. Это средство формализовать API, который класс требует от своего делегата. Для данного протокола делегата вы должны понимать этот API. См. Документацию Apple относительно этого конкретного протокола.

Наконец, нет ни способа, ни необходимости объявлять, что ваш класс MacRuby соответствует какому-либо протоколу. Вы можете напрямую назначить свой экземпляр класса делегату объекта client. Вы все еще обязаны соблюдать протокол, но не будет никакой проверки во время компиляции. Если вы не соответствуете, вы можете ожидать исключения во время выполнения. Или какое-то странное поведение. Или что-то.

В любом случае, это мое понимание.

...