Протоколы Objective-C - PullRequest
       18

Протоколы Objective-C

1 голос
/ 26 июля 2011

Я наткнулся на следующий фрагмент кода в файле с именем TileOverlay.h:

@protocol TileOverlay <MKOverlay>

Я пытаюсь ясно понять, что он делает.Затем несколько других оверлеев импортируют этот файл .h.По сути, этот файл просто создает модифицированную версию класса MKOverlay?

Если нет, то не могли бы вы уточнить, что он делает?

Ответы [ 4 ]

5 голосов
/ 26 июля 2011

MKOverlay - это протокол, а TileOverlay - это протокол, который расширяет MKOverlay.

. Любой класс, соответствующий протоколу TileOverlay, также соответствует протоколу MKOverlay.

Подробное объяснение см. Протоколы в протоколах в документации.

1 голос
/ 26 июля 2011

Вы можете думать о протоколах, таких как интерфейсы в Java или C #, в основном они объявляют контракт, которому должны следовать реализующие классы. Разница в том, что в Objective C вы можете сделать некоторые из объявленных методов необязательными.

0 голосов
/ 26 июля 2011

Это называется наследованием протокола.

MKOverlay - это протокол, определяющий набор методов для реализуемых объектов.

TileOverlay наследуется для MKOverlay, что означает, что объект, соответствующий TileOverlay, должен реализовывать методы из MKOverlay и методы из TileOverlay

Здесь - это ссылка, которая немного больше говорит о наследовании протокола

0 голосов
/ 26 июля 2011

Протокол в Objective-C - это то, что вы в Java или C # назвали бы интерфейсом. Это контракт, который может выполнить любой другой класс, на языке Obj-C соответствует .

Это:

@protocol TileOverlay <MKOverlay>

Определяет протокол с именем TileOverlay, который сам по себе расширяет MKOverlay. То есть, согласно TileOverlay, вы также должны соответствовать MKOverlay.

Протоколы в Obj-C, так же как интерфейсы в Jave или C #, не имеют отношения к реализации. Это ничего не делает. Это просто маркер во время компиляции и во время выполнения, если вы хотите, чтобы проверить, существуют ли некоторые из них функционально.

...