В Objective C я могу использовать #pragma mark
для маркировки разделов моего кода в навигаторе символов. Так как это команда препроцессора C, она не доступна в Swift. Есть ли замена для этого в Swift, или я должен использовать уродливые комментарии?
swift
documentation
Arbitur
источник
источник
Ответы:
Ты можешь использовать
// MARK:
Также было обсуждение, что либеральное использование расширений классов могло бы быть лучшей практикой в любом случае. Поскольку расширения могут реализовывать протоколы, вы можете, например, поместить все методы делегата табличного представления в расширение и сгруппировать ваш код на более семантическом уровне, чем
#pragma mark
это возможно.источник
// MARK:
,// TODO:
и// FIXME
в источнике Swift и перечисляет их в строке перехода. (Кстати, это уже было сделано в (Obj) C-источнике -#pragma mark
не единственный способ.) И да, вы все равно можете добавить-
к своему,MARK
чтобы поместить разделители в меню.MARK
работой сейчас, использование расширений для группировки некоторых видов семантически связанного кода (особенно реализации протокола) все еще может быть полезным. ИМХО, гораздо лучше читать ваше заявление о соответствии протокола прямо рядом с методами, которые его реализуют, а не 5 объявлений протокола в верхней части файла и 50 реализаций связанных методов, случайно разбросанных где-то ниже.#pragma mark
.// MARK: -
это просто разделитель,// MARK: - stuff
дает вам разделитель и заголовок, и// MARK: - stuff -
дает вам разделитель, заголовок и другой разделитель все в одной строке комментария.До Xcode 5
#pragma mark
существовала директива препроцессора .Начиная с Xcode 6, вы должны использовать
// MARK:
Эти возможности препроцессора позволяют внести некоторую структуру в раскрывающийся список функций редактора исходного кода.
Некоторые примеры :
-> будет предшествовать горизонтальный разделитель
-> ставит «ваш текст идет здесь» жирным шрифтом в раскрывающемся списке
-> в раскрывающемся списке выделяет жирным шрифтом слово «ваш текст», которому предшествует горизонтальный разделитель
обновление: добавлен скриншот, потому что у некоторых людей все еще есть проблемы с этим:
источник
// MARK: - text
для меня нет разделителей, и в раскрывающемся списке отображается MARK: текст, а не просто текст .Для тех, кто заинтересован в использовании расширений против прагматических отметок (как упомянуто в первом комментарии), вот как реализовать это из Swift Engineer:
Это также не обязательно лучшая практика, но это то, как вы делаете это, если хотите.
источник
typealias
. Напримерtypealias DataSource = SwiftTableViewController
. Тогдаextension Datasource {}
UITableViewController
это не протокол, это класс. Вы, вероятно, имеете в видуUITableViewControllerDataSource
, но это не шаблон, используемый в примере.extension
получить заголовок с протоколом, напримерextension SwiftTableViewController : UITableViewController
, было бы более понятно, почему вы добавили это расширение в класс.extension SwiftTableViewController : UITableViewDelegate { .. }
иextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
был использован в Objective-C для группировки нескольких функций с помощью разделения строк.В Swift вы можете добиться этого, используя
MARK, TODO OR FIXME
я. ОТМЕТКА :
//MARK: viewDidLoad
Это создаст горизонтальную линию с функциями, сгруппированными под viewDidLoad (показано на скриншоте 1)
II. ДЕЛАТЬ :
//TODO: - viewDidLoad
Это сгруппирует функцию под TODO: - категория viewDidLoad (показано на скриншоте 2)
III. ИСПРАВИТЬ МЕНЯ :
//FIXME - viewDidLoad
Это сгруппирует функцию в FIXME: - категория viewDidLoad (показано на скриншоте 3)
Проверьте эту яблочную документацию для деталей.
источник
Официальная документация
Официальный документ Apple о панели переходов Xcode: добавление аннотаций кода в панель переходов
Скриншоты Jump Bar для примера кода
Поведение в Xcode 10.1 и macOS 10.14.3 (Мохаве)
Поведение в Xcode 10.0 и macOS 10.13.4 (High Sierra)
Поведение в Xcode 9.4.1 и macOS 10.13.0
обсуждение
!!!:
и???:
иногда не могут быть отображены.источник
В коде Objective-C Xcode обнаруживает такие комментарии,
// MARK: - foo
которые немного более переносимы, чем#pragma
. Но они, похоже, тоже не подобраны (пока?).Редактировать: Исправлено в Xcode 6 beta 4.
источник
// MARK: -
на данный момент не работает.// MARK:
, похоже, не работает. Я пробовал с пробелом и без пробела, с двоеточием и без него, все заглавные буквы и смешанный (Марк). Есть ли хитрость? Нужно ли активировать преф или что-то еще?Я думаю, что
Extensions
это лучший способ вместо#pragma mark
.Код перед использованием
Extensions
:Код после использования
Extensions
:источник
extension
одно не особо выделяется в выпадающем меню элемента управления Xcode.Xcode 8 теперь обрабатывает это следующим образом и выглядит следующим образом в раскрывающемся списке методов:
источник
// ARK:
!!!
И???
синтаксис как представляется , не будет работать на Xcode 8.3.3 ...Этим утром в WWDC в лаборатории Swift подтвердили инженеру Apple, что в данный момент нет #pragma или его эквивалента, они считают это ошибкой, и она скоро появится, так что, я надеюсь, бета 2, я надеюсь.
Во всяком случае, это на своем пути.
Xcode теперь поддерживает ориентиры // MARK :, // TODO: и // FIXME, чтобы комментировать ваш код и перечислять их в панели переходов
источник
В
#pragma_mark
Swift можно добавить три варианта :1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Примечание: использует
-
для добавления разделителейисточник
использование
или
Это даст строку выше отметки прагмы, делая ее более читабельной.
Для удобства просто добавьте
к вашим фрагментам кода.
Альтернативный способ -
Используйте это таким образом
Это не только добавит метку (точно так же, как метка прагмы), но и хорошо разделит код.
источник
//MARK
формат (без пробела) и предлагать// MARK: (text)
( один пробел между//
и MARK, без пробела междуMARK
и:
и один пробел между:
и именем раздела)Добавьте строку между двоеточием и вашим описанием, чтобы вставить разделительную строку. Это помогает организовать ваш код еще больше. Приведенный выше код и снимок экрана используют комментарий MARK со строкой.
Это работает только с комментарием MARK.
источник
Вы также можете быть заинтересованы в директивах компилятора Swift 4.2 / XCode 10, таких как
а также
Это может быть полезно, когда вы действительно не хотите что-то пропустить.
источник
Профессиональный программист должен использовать этот тег для хорошего кода. Это также хорошо для командной работы.
Подобный метод легко найти
источник
В Xcode 11 они добавили миникарту, которую можно активировать
Editor -> Minimap
.Миникарта покажет каждый текст пометки для быстрой ориентации в коде. Каждый знак написан как
// MARK: Variables
источник
//MARK:
не похоже , чтобы работать для меня в Xcode 6.3.2. Тем не менее, вот что я сделал, чтобы заставить его работать :1) код:
2) При
jump bar
добавлении//MARK
комментария ничего не отображается . Однако, если я нажму на крайнее правое имя в панели переходов, в моем случае это говорит о томMainWindowController(with a leading C icon)
, что появится всплывающее окно с эффектом комментария // MARK: а именно заголовок, который говорит: «Мои классные методы»:3) Я также заметил, что если я нажму на один из методов в моем коде, то этот метод станет самой правой записью в панели переходов. Чтобы
MainWindowController(with a leading C icon)
стать самой правой записью в панели переходов, я должен щелкнуть пробел над моими методами.источник
Apple , говорится в последней версии Building какао приложения ,
Кажется, что символ # по-прежнему является тем, как вы работаете с различными конфигурациями сборки и тому подобными вещами, но похоже, что они пытаются сократить ваши потребности в большей части предварительной обработки в духе прагмы и перенаправить вас на другие языковые функции в целом. Возможно, это поможет игровым площадкам и REPL вести себя как можно ближе к полностью скомпилированному коду.
источник
источник
Попробуй это:
источник
Прагма - это способ улучшить читабельность вашего кода. Комментарии прагмы выглядят как теги на панели переходов Xcode.
Пример: в коде
Вот как это будет выглядеть в панели переходов Xcode.
источник