Какое значение имеют знаки #pragma?Зачем нам нужны знаки #pragma? - PullRequest
270 голосов
/ 28 июля 2011

Какова цель #pragma отметок в Xcode? Имеет ли значение их расположение в .m файлах? Должны ли некоторые #pragma идти раньше всех?

  • Должны ли они присутствовать?
  • Можно ли добавлять новые отметки? Зачем им быть? Что вызывает это?
  • Есть ли вред в удалении знака? Хотел бы кто-нибудь?

Ответы [ 7 ]

308 голосов
/ 28 июля 2011
Директивы

#pragma mark отображаются в Xcode в меню для прямого доступа к методам. Они никак не влияют на программу.

Например, использование его с Xcode 4 приведет к тому, что эти элементы появятся непосредственно в панели переходов.

Существует специальное pragma mark -, которое создает строку.

enter image description here

53 голосов
/ 22 декабря 2011

#pragma mark используется для обозначения группы методов, чтобы вы могли легко находить и обнаруживать методы из панели переходов.Это может помочь вам, когда ваши файлы кода достигают примерно 1000 строк, и вы хотите быстро найти методы через категорию из поля перехода.

В длинной программе становится трудно запомнить и найти имя метода.Таким образом, прагма позволяет классифицировать методы в соответствии с работой, которую они выполняют.Например, вы пометили какой-то тег для методов протокола табличного представления, методов AlertView, методов Init, объявления и т. Д.

#pragma mark - это средство для XCode, но оно не влияет на ваш код.Это просто помогает упростить поиск методов при кодировании.

20 голосов
/ 26 декабря 2011

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

13 голосов
/ 14 мая 2014

Просто для того, чтобы добавить информацию, которую я искал: pragma mark специфичен для XCode, поэтому, если вы имеете дело с проектом C ++, который вы открываете в разных IDE, он не имеет никакого эффекта.Например, в Qt Creator он не добавляет категории для методов и не генерирует никаких предупреждений / ошибок.

EDIT

#pragma - это директива препроцессора, которая приходитиз языка программирования C.Его цель - указать зависящую от реализации информацию для компилятора, то есть каждый компилятор может интерпретировать эту директиву так, как он хочет.Тем не менее, это скорее считается расширением, которое не меняет / не влияет на сам код.Таким образом, компиляторы могут игнорировать это.

XCode - это IDE, которая использует преимущества #pragma и использует ее по-своему.Дело в том, что #pragma не относится к Xcode и даже не относится к Objective-C.

11 голосов
/ 03 апреля 2013

Когда у нас большой / длинный класс, скажем, более пары сотен строк кода, мы не можем видеть все на экране монитора, следовательно, мы не можем видеть обзор (также называемый элементами документа) нашего класса. Когда-нибудь мы хотим увидеть обзор нашего класса; все методы, константы, свойства и т. д. с первого взгляда. Вы можете нажать Ctrl + 6 в XCode, чтобы увидеть обзор вашего класса. Вы получите всплывающее окно Window aka Jump Bar.

По умолчанию эта панель перехода не имеет сегментов / сегментов. Это всего лишь один длинный список. (Хотя мы можем просто начать печатать, когда появится панель перехода, и она будет искать среди элементов панели перехода). Здесь приходит необходимость pragma mark

Если вы хотите создать разделы в панели переходов, вы можете использовать прагма с соответствующим описанием. Теперь обратитесь к снимку, прикрепленному в вопросе. Там «View lifeCycle» и «Раздел, выделенный ..» - это разделы, созданные pragma mark s

9 голосов
/ 22 января 2014

При поиске документа doc, указывающего на то, как прагмы являются директивами для компилятора, я обнаружил эту статью NSHipster , которая хорошо справляется с работой.

Надеюсь, вам понравится чтение

5 голосов
/ 16 декабря 2016
#pragma mark - NSSecureCoding

Основное назначение "прагмы" - для справки разработчика. enter image description here

Вы можете легко найти метод / функцию в огромных тысячах строк кода.

...