No Objetivo C, posso usar #pragma mark
para marcar seções do meu código no navegador de símbolos. Como esse é um comando do pré-processador C, não está disponível no Swift. Existe um substituto para isso no Swift, ou eu tenho que usar comentários feios?
swift
documentation
Arbitur
fonte
fonte
Respostas:
Você pode usar
// MARK:
Também se discutiu que o uso liberal de extensões de classe pode ser uma prática melhor de qualquer maneira. Como as extensões podem implementar protocolos, você pode, por exemplo, colocar todos os seus métodos de delegação de exibição de tabela em uma extensão e agrupar seu código em um nível mais semântico do que
#pragma mark
é capaz.fonte
// MARK:
,// TODO:
e// FIXME
na fonte Swift, e os lista na barra de salto. (BTW, ele já funcionou na fonte (Obj) C -#pragma mark
não é a única maneira.) E sim, você ainda pode adicionar-
ao seuMARK
para colocar separadores no menu.MARK
trabalhando agora, o uso de extensões para agrupar alguns tipos de código semanticamente relacionado (especialmente implementações de protocolo) ainda pode ser útil. No IMHO, é muito melhor ter sua declaração de conformidade com o protocolo ao lado dos métodos que a implementam, não 5 declarações de protocolo na parte superior do arquivo e 50 implementações de método relacionadas, espalhadas aleatoriamente em algum lugar abaixo.#pragma mark
.// MARK: -
é apenas um separador,// MARK: - stuff
fornece um separador e um cabeçalho, além de// MARK: - stuff -
um separador, um cabeçalho e outro separador, todos em uma linha de comentário.Até o Xcode 5, a diretiva de pré-processador
#pragma mark
existia.A partir do Xcode 6, você deve usar
// MARK:
Esses recursos do pré-processador permitem trazer alguma estrutura para a caixa suspensa da função do editor de código-fonte.
alguns exemplos :
-> será precedido por um divisor horizontal
-> coloca 'seu texto aqui' em negrito na lista suspensa
-> coloca 'seu texto aqui' em negrito na lista suspensa, precedido por um divisor horizontal
update: screenshot adicionado porque algumas pessoas ainda parecem ter problemas com isso:
fonte
// MARK: - text
para mim e a lista suspensa mostra MARK: text em vez de apenas texto .Para quem estiver interessado em usar extensões vs marcas pragma (como mencionado no primeiro comentário), veja como implementá-lo a partir de um Swift Engineer:
Também não é necessariamente a melhor prática, mas é assim que você faz, se quiser.
fonte
typealias
. Por exemplotypealias DataSource = SwiftTableViewController
. Entãoextension Datasource {}
UITableViewController
não é um protocolo, é uma classe. Você provavelmente quer dizerUITableViewControllerDataSource
, mas esse não é o padrão usado no exemplo.extension
tem o cabeçalho com o protocolo, comoextension SwiftTableViewController : UITableViewController
, seria mais legível ver por que você adicionou essa extensão à classe.extension SwiftTableViewController : UITableViewDelegate { .. }
eextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
foi usado no Objective-C para agrupar várias funções juntas por separação de linha.No Swift, você pode conseguir isso usando
MARK, TODO OR FIXME
Eu. MARCA:
//MARK: viewDidLoad
Isso criará uma linha horizontal com funções agrupadas em viewDidLoad (mostrado na captura de tela 1)
ii. FAÇAM :
//TODO: - viewDidLoad
Isso agrupará a função na TODO: - categoria viewDidLoad (mostrada na captura de tela 2)
iii. FIXME:
//FIXME - viewDidLoad
Isso agrupará a função no FIXME: - categoria viewDidLoad (mostrada na captura de tela 3)
Consulte esta documentação da apple para obter detalhes.
fonte
Documentação oficial
Documento oficial da Apple sobre o Xcode Jump Bar: adicione anotações de código à barra de salto
Capturas de tela da barra de salto para código de exemplo
Comportamento no Xcode 10.1 e no macOS 10.14.3 (Mojave)
Comportamento no Xcode 10.0 e no macOS 10.13.4 (High Sierra)
Comportamento no Xcode 9.4.1 e no macOS 10.13.0
Discussão
!!!:
e???:
às vezes não podem ser exibidos.fonte
No código Objective-C, o Xcode detecta comentários como o
// MARK: - foo
que é um pouco mais portátil do que#pragma
. Mas estes também não parecem ser apanhados (ainda?).Edit: Corrigido no Xcode 6 beta 4.
fonte
// MARK: -
não está funcionando no momento.// MARK:
não parece estar funcionando. Eu tentei com e sem o espaço, com e sem os dois pontos, all-caps e mixed (Mark). Existe algum truque? Preciso ativar um pref ou algo assim?Eu acho que
Extensions
é uma maneira melhor em vez de#pragma mark
.O código antes de usar
Extensions
:O código após o uso
Extensions
:fonte
extension
sozinho não se destaca no menu suspenso do controle de navegação do Xcode.O Xcode 8 agora lida com o seguinte e aparece desta forma no menu suspenso do método:
fonte
// ARK:
para mim no Xcode 8!!!
e???
sintaxe não parece estar trabalhando em Xcode 8.3.3 ...Confirmado com um engenheiro da Apple no laboratório Swift hoje de manhã na WWDC que atualmente não há nenhum #pragma ou equivalente no momento, eles consideram isso um bug, e ele chegará em breve.
Enfim, está a caminho.
O Xcode agora suporta os marcos // MARK :, // TODO: e // FIXME para anotar seu código e listá-los na barra de salto
fonte
Existem três opções para adicionar
#pragma_mark
no Swift:1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Nota: Utiliza
-
para adicionar separadoresfonte
Usar
ou
Isso dará uma linha acima da marca pragma, tornando-a mais legível.
Para facilitar, basta adicionar
aos seus snippets de código.
Caminho alternativo -
Use-o desta maneira
Isso não apenas adicionará uma marca (como a marca pragma), mas também segregará bem o código.
fonte
//MARK
formato (sem espaço) e sugerir// MARK: (text)
( um espaço entre//
e MARK, nenhum espaço entreMARK
e:
, e um espaço entre:
e o nome da seção)Adicione uma linha entre os dois pontos e sua descrição para inserir uma linha separadora. Isso ajuda a organizar seu código ainda mais. O código e a captura de tela acima fazem uso do comentário MARK com uma linha incluída.
Isso funciona apenas com o comentário MARK.
fonte
Você também pode estar interessado em diretivas do compilador Swift 4.2 / XCode 10 como
e
Pode ser útil quando você realmente não quer perder algo.
fonte
O programador profissional deve usar essa tag para obter um bom código. Também é bom para o trabalho em equipe.
É fácil encontrar um método como este
fonte
No Xcode 11, eles adicionaram o minimapa, que pode ser ativado
Editor -> Minimap
.O Minimap mostrará o texto de cada marca para orientação rápida no código. Cada marca é escrita como
// MARK: Variables
fonte
//MARK:
não parecem trabalhar para mim no Xcode 6.3.2. No entanto, foi o que fiz para fazê-lo funcionar :1) Código:
2) No
jump bar
nada parece mudar ao adicionar o//MARK
: comentário. No entanto, se eu clicar no nome mais à direita na barra de salto, no meu casoMainWindowController(with a leading C icon)
, uma janela pop-up será exibida mostrando os efeitos do comentário // MARK:, ou seja, um cabeçalho que diz "Meus métodos legais":3) Percebo também que, se eu clicar em um dos métodos do meu código, o método se tornará a entrada mais à direita na barra de salto. Para
MainWindowController(with a leading C icon)
ser a entrada mais à direita na barra de salto, tenho que clicar no espaço em branco acima dos meus métodos.fonte
A Apple declara na versão mais recente do Building Cocoa Apps ,
O caractere # parece ainda ser como você trabalha com várias configurações de compilação e coisas assim, mas parece que eles estão tentando reduzir sua necessidade de pré-processamento na veia do pragma e encaminhá-lo para outros recursos de idioma. Talvez isso ajude na operação dos Playgrounds e no REPL se comportando o mais próximo possível do código totalmente compilado.
fonte
fonte
Tente o seguinte:
fonte
A marca Pragma é uma maneira de melhorar a legibilidade do seu código. Os comentários pragma apareceriam como tags na barra de jumpers do Xcode.
Exemplo: no código,
É assim que apareceria na barra de salto do Xcode.
fonte