объективный-c протокол определяется в его собственном.h файле?

Имя команды: Edit.NavigateTo . В VS 2015 RC сочетание клавиш по умолчанию для него по-прежнему Ctrl + , в глобальной области видимости.

18
задан Nosredna 6 June 2009 в 03:06
поделиться

5 ответов

Я думаю, что размещение протокола зависит от того, как вы его используете. Часто протокол используется для определения функциональности делегата или источника данных для другого класса. В таком случае, я думаю, вы можете смело поместить определение протокола в начало другого класса, поскольку они должны использоваться вместе.

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

Бенни прав,

20
ответ дан 30 November 2019 в 08:33
поделиться

Протоколы обычно определяются в собственном файле .h (по моему опыту). Но их можно определить в файле shared.h. Было бы сложно разрешить пользователям протокола использовать протокол в общей структуре файлов, и, кроме того, это загромождает ваш API. Документирование и использование, вероятно, было бы проще, если бы протокол был в собственном файле .h.

Кроме того, использование вашего протокола для таких вещей, как полиморфные реализации, потребовало бы меньше накладных расходов, если бы вам просто нужно было включить файл протокола .h вместо файл .h, содержащий объявления других классов. Я не уверен в точной стоимости / экономии этой идеи, но я читал, что будут некоторые (меньшие двоичные файлы?)

С уважением, Фрэнк

3
ответ дан 30 November 2019 в 08:33
поделиться

Это в значительной степени вопрос стиля в Objective-C. Я полагаю, что действительно «правильный» способ - создать отдельный файл .h для протокола, и если бы я создавал протокол, который не принадлежал ни к чему другому (например, NSCoding), я бы именно это и сделал. С другой стороны, большую часть времени, когда я создаю протокол (или неформальный протокол, используя категорию в NSObject), он привязан к другому классу, например, неформальному протоколу источника данных NSTableView. В таких ситуациях я просто помещаю объявление в файл заголовка этого класса для простоты.

0
ответ дан 30 November 2019 в 08:33
поделиться

В Objective-C то же самое. Потому что протокол - это список методов, которые совместно используются классами. Протокол - это только список методов без соответствующих реализаций. Они предназначены для реализации кем-то другим.

-1
ответ дан 30 November 2019 в 08:33
поделиться

Я думаю, что если он где-то определен и включен в один из файлов, которые вы компилируете, он будет определен. В Objective-C нет соглашений вроде «ClassName.java», как в Java.

Это очень полезно, когда вы хотите делать такие вещи, как категории для таких вещей, как частные методы / свойства.

3
ответ дан 30 November 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: