tatuape - marca#pragma no Swift?




swift tatuape (12)

No Objetivo C, posso usar a #pragma mark para marcar seções do meu código no navegador de símbolos. Como este é um comando do pré-processador C, ele não está disponível no Swift. Existe um stand-in para isso no Swift, ou eu tenho que usar comentários feios?


Adicionar um item de tarefa: insira um comentário com o prefixo TODO :. Por exemplo: // TODO: [seu item de tarefa].

Adicione um lembrete de correção de bug: Insira um comentário com o prefixo FIXME :. Por exemplo: // FIXME: [seu lembrete de correção de bug].

Adicione um título: insira um comentário com o prefixo MARK :. Por exemplo: // MARK: [seu cabeçalho de seção].

Adicionar uma linha separadora: Para adicionar um separador acima de uma anotação, adicione um hífen (-) antes da parte do comentário da anotação. Por exemplo: // MARK: - [seu conteúdo]. Para adicionar um separador abaixo de uma anotação, adicione um hífen (-) após a parte do comentário da anotação. Por exemplo: // MARK: [seu conteúdo] -.


Documentação

Documento oficial da Apple sobre o Xcode Jump Bar: Adicione anotações de código à barra de salto

Visualizações

Código - Swift 4.2

Barra de Salto - Xcode 10.0

NOTA

!!!: e ???: parecem não ser mais suportados como no Xcode 9.4.1.

Barra de Salto - Xcode 9.4.1


Até o Xcode 5 existia a #pragma mark diretiva do pré-processador.

Do Xcode 6 ligado, você precisa usar o // MARK:

Esses recursos de pré-processamento permitem trazer alguma estrutura para a caixa suspensa de funções do editor de código-fonte.

alguns exemplos :

// MARK:

-> será precedido por um divisor horizontal

// MARK: your text goes here

-> coloca 'seu texto vai aqui' em negrito na lista suspensa

// MARK: - your text goes here

-> coloca 'seu texto vai aqui' em negrito na lista suspensa, precedida por um divisor horizontal

update: added screenshot porque algumas pessoas ainda parecem ter problemas com isso:


Confirmado com um engenheiro da Apple no laboratório Swift esta manhã na WWDC que atualmente não há nenhum # pragma ou equivalente no momento, eles consideram isso um bug, e ele vai chegar em breve, então eu estou supondo beta 2, eu espero.

De qualquer forma, 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


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: Usos - para adicionar separadores


No código Objective-C, o Xcode detecta comentários como // MARK: - foo que é um pouco mais portável que o #pragma . Mas estes não parecem ser captados também (ainda?).

Editar: Corrigido no Xcode 6 beta 4.


O programador profissional deve usar esta tag para um bom código. Também é bom para o trabalho em equipe.

// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live 


Para aqueles que estão interessados ​​em usar extensões versus marcas pragma (como mencionado no primeiro comentário), veja como implementá-lo a partir de um Engenheiro Swift:

import UIKit

class SwiftTableViewController: UITableViewController {

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }
}

extension SwiftTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
        let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;

        cell.textLabel.text = "Hello World"

        return cell
    }

}

Também não é necessariamente a melhor prática, mas é assim que você faz, se quiser.


Você pode também estar interessado em diretivas de compilador Swift 4.2 / XCode 10 como

#warning("Some string to display")

e

#error("Some error to display")

Pode ser útil quando você realmente não quer perder alguma coisa.


Você pode usar o // MARK:

Também tem havido discussões 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 métodos delegados de exibição de tabela em uma extensão e agrupar seu código em um nível mais semântico do que a #pragma mark é capaz.


Pragma mark - [SOME TEXT HERE] foi usada em 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. MARK: //MARK: viewDidLoad

Isso criará uma linha horizontal com funções agrupadas em viewDidLoad (mostrado na captura de tela 1)

ii. TODO: //TODO: - viewDidLoad

Isto irá agrupar a função em TODO: - categoria viewDidLoad (mostrada na captura de tela 2)

iii. FIXME: //FIXME - viewDidLoad

Isto irá agrupar a função sob o FIXME: - viewDidLoad category (mostrada na captura de tela 3)


//# MARK: - Spinner Class Methods

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 usam o comentário MARK com uma linha incluída.

  1. // # MARK: - Métodos de texto (LINE)
  2. // # MARK: Métodos de texto (NO LINE)

Isso só funciona com o comentário MARK.





swift