Яке значення знаків #pragma? Навіщо нам потрібні позначки #pragma?


279

Яке призначення #pragmaзнаків у Xcode? Чи має значення їх розташування у .mфайлах? Чи повинні одні #pragmaприходити перед усіма іншими?

  • Чи повинні вони бути присутніми?
  • Чи можна додавати нові позначки? Чому б вони були? Що це викликає?
  • Чи є якась шкода від зняття позначки? Хтось хотів би цього зробити?

5
Перевірте посилання: cocoasamurai.blogspot.com/2006/09/…
rptwsthi

Мені особисто їх не подобається. Серйозно, ти хочеш подумати про те, куди ти повинен постійно ставити метод? Є набагато важливіші речі, які слід організувати, як-от звернути увагу на принцип єдиної відповідальності
Бред Томас

2
Для швидкої мови позначка # Прага не працюватиме. Використання #MARK або #FIXME або #TODO перевірити це посилання для отримання додаткової інформації stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Відповіді:


315

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

Наприклад, використовуючи його з Xcode 4, ці елементи відображатимуться безпосередньо в панелі стрибків.

Є спеціальний, pragma mark -який створює лінію.

введіть тут опис зображення


Оцініть відповідь - чи зможете ви опублікувати оновлену відповідь із зазначенням того, як виглядають позначки прагми (у тому меню чи де вони зараз) у новому XCode?
користувач7804781

Чи є еквівалент Python?
Едвард Фолк

@EdwardFalk Це специфічно для IDE, тому це дійсно залежить від вашого редактора IDE / тексту
Michael

Мій компілятор GCC подав попередження, foo.h: 52: 0: попередження: ігнорування позначки #pragma [-Wunknown-pragmas] #pragma mark -, що не є фатальним. Тож gcc, ймовірно, не знає про '-'.
Кемін Чжоу

55

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

У тривалій програмі стає важко запам'ятати і знайти назву методу. Таким чином, прагма-марка дозволяє класифікувати методи відповідно до роботи, яку вони виконують. Наприклад, ви помітили тег для методів протоколу перегляду таблиць, методів AlertView, методів Init, декларації тощо.

#pragma markє засобом для XCode, але це не впливає на ваш код. Це просто допомагає полегшити пошук методів під час кодування.


21

Простим словом ми можемо сказати, що #pragma mark -використовується для категоризації методів, тому ви можете легко знайти свої методи. Це дуже корисно для довгих проектів.


13

Просто для додання інформації, яку я шукав: pragma markспецифічний Xcode, тому якщо ви маєте справу з проектом C ++, який ви відкриваєте в різних ІДЕ, це не матиме жодного ефекту. Наприклад, у Qt Creator він не додає категорій методів і не створює попереджень / помилок.

EDIT

#pragmaє директивою препроцесора, що походить з мови програмування на С. Її мета полягає в тому, щоб вказати компілятору інформацію, що залежить від реалізації - тобто кожен компілятор може вибрати інтерпретацію цієї директиви так, як хоче. Однак, це вважається розширенням, яке не змінює / не впливає на сам код. Тож компілятори можуть ігнорувати це.

Xcode - це IDE, який використовує переваги #pragmaта використовує його по-своєму. Справа в тому, що #pragmaне є Xcode та навіть Specictive-C.


11

Коли у нас великий / тривалий клас, скажімо, більше пари 100 рядків коду, ми не можемо побачити все на екрані монітора, отже, ми не можемо побачити огляд (також називаються елементи документа) нашого класу. Колись ми хочемо побачити огляд нашого класу; усі його методи, константи, властивості тощо. Ви можете натиснути Ctrl + 6 у XCode, щоб переглянути огляд свого класу. Ви отримаєте спливаюче вікно вікна, так само стрибок бар.

За замовчуванням на цій панелі стрибків немає жодних відро / секцій. Це лише один довгий список. (Хоча ми можемо просто почати набирати текст, коли з’явиться стрибок стрибка, і він буде шукати серед елементів стрибка стрибка). Тут виникає потребаpragma mark

Якщо ви хочете створити розділи на панелі стрибків, тоді ви можете використовувати позначки прагми з відповідним описом. Тепер зверніться до знімка, який додається. Там "Переглянути життєвий цикл" та "Розділ, присвячений .." - це розділи, створені pragma marks


10

Під час пошуку doc, щоб вказати на те, як прагма є директивами для компілятора, я знайшов цю статтю NSHipster яка виконує цю роботу досить добре.

Сподіваюся, вам сподобається читання


7
#pragma mark - NSSecureCoding

Основне призначення "прагми" - це посилання на розробника.введіть тут опис зображення

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

Xcode 11+:

Лінія маркера вгорі

// MARK: - Properties

Маркерна лінія зверху та знизу

// MARK: - Properties - 

Лінія маркера лише внизу

// MARK: Properties -

Тож я можу видалити рядок? її марнотратство для мого мозку.

1
Видалення # pragma-позначки не вплине на будь-яку функціональність вашого коду, але ваш код може втратити читабельність. Якщо ви насправді не хочете, можете вийняти його.
Джеба Мойсей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.