表示 - #pragma mark in Swift?




xcode todo 表示 (12)

ドキュメンテーション

Xcode Jump Barに関するアップルの公式文書:ジャンプバーにコードの注釈を追加する

プレビュー

コード - スイフト4.2

ジャンプバー - Xcode 10.0

注意

!!!:???: Xcode 9.4.1のようにサポートされなくなったようです。

ジャンプバー - Xcode 9.4.1

Objective Cでは、シンボルナビゲータで#pragma markを使用してコードのセクションを#pragma markすることができます。 これはCのプリプロセッサコマンドなので、Swiftでは利用できません。 これはSwiftのスタンドインですか、醜いコメントを使わなければなりませんか?


Apple Cocoa Appsの最新バージョンでは、

Swiftコンパイラにはプリプロセッサは含まれていません。 代わりに、コンパイル時の属性、ビルド構成、および言語機能を利用して、同じ機能を実現します。 このため、プリプロセッサディレクティブはSwiftにインポートされません。

#文字は、さまざまなビルド構成やそのようなもので作業する方法と同じように見えますが、プラグマの大部分の前処理の必要性を減らして、他の言語機能に転送するように見えます。 おそらくこれは、完全にコンパイルされたコードのできるだけ近くで動作するプレイグランドとREPLの操作を支援するためです。


Swiftに#pragma_markを追加するには3つのオプションがあります:

1) // MARK: - your text here -

2) // TODO: - your text here -

3) // FIXME: - your text here -

注:用途-セパレータの追加


ToDo項目を追加:接頭辞TODO:を含むコメントを挿入します。 たとえば、次のようになります。// TODO:[あなたのToDoアイテム]。

バグ修正リマインダを追加する:接頭辞FIXME:が付いたコメントを挿入します。 例:// FIXME:[あなたのバグ修正通知]。

見出しを追加:プレフィックスMARK:を含むコメントを挿入します。 例:// MARK:[あなたのセクション見出し]。

セパレータ行を追加する:アノテーションの上にセパレータを追加するには、アノテーションのコメント部分の前にハイフン( - )を追加します。 例:// MARK: - [あなたのコンテンツ]。 アノテーションの下にセパレータを追加するには、アノテーションのコメント部分の後にハイフン( - )を追加します。 例:// MARK:[あなたのコンテンツ] - 。


#pragma markではなく、 Extensionsが良い方法だと思います。

Extensionsを使用する前のコード:

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
    ...

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        ...
    }
}

Extensionsを使用した後のコード:

class ViewController: UIViewController {
    ...
}

extension ViewController: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        ...
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        ...
    }
}

extension ViewController: UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
       ...
    }
}

// MARK:を使うことができます// MARK:

とにかく、クラス拡張の自由使用がより良い方法かもしれないという議論もあります。 エクステンションはプロトコルを実装できるので、例えば、テーブルビューのデリゲートメソッドをすべてエクステンションに入れ、 #pragma markよりも意味のあるレベルにコードをまとめることができます。


Pragma mark - [SOME TEXT HERE]Objective-Cで使用され、行分割によって複数の関数をグループ化しました。

Swift MARK, TODO OR FIXMEを使用してこれを達成できます

私。 MARK: //MARK: viewDidLoad

これにより、viewDidLoadの下にグループ化された関数を持つ水平線が作成されます(スクリーンショット1に示されています)

ii。 TODO: //TODO: - viewDidLoad

TODOの下で関数をグループ化します: - viewDidLoadカテゴリ(スクリーンショット2に表示)

iii。 FIXME: //FIXME - viewDidLoad

これは、 FIXMEの下で機能をグループ化します: - viewDidLoadカテゴリ(スクリーンショット3に示されています)


つかいます

// MARK: SectionName

または

// MARK: - SectionName

これによりプラグママークの上に行が表示され、読みやすくなります。

簡単に追加するには

// MARK: - <#label#>

あなたのコードスニペットに。

代替方法 -

この方法で使用する

private typealias SectionName = ViewController
private extension SectionName  {
    // Your methods
}

これはマークを追加するだけでなく(プラグママークのように)、コードをうまく分離します。


プリプロセッサディレクティブ#pragma mark存在しました。

Xcode 6以降では、 // MARK:を使用する必要があります// MARK:

これらのプリプロセッサ機能により、ソースコードエディタの関数ドロップダウンボックスに構造体を持たせることができます。

いくつかの例 :

// MARK:

- >の前に水平ディバイダ

// MARK: your text goes here

- >あなたのテキストはここに太字でドロップダウンリストに入れます

// MARK: - your text goes here

- >「テキストはここに表示されます」をドロップダウンリストの太字で、横に区切り

アップデート:スクリーンショットを追加しました。これはまだいくつかの人々に問題があるようです。


プロフェッショナルプログラマーは、良いコードのためにこのタグを使用しなければなりません。 チームワークにも適しています。

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


拡張機能とプラグママークを使用することに興味がある人は(最初のコメントで説明したように)、Swift Engineerから実装する方法は次のとおりです。

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
    }

}

それは必ずしもベストプラクティスではありませんが、これはあなたが好きなときに行う方法です。


//# MARK: - Spinner Class Methods

区切り線を挿入するには、コロンと説明の間に行を追加します。 これはコードをさらに整理するのに役立ちます。 上記のコードとスクリーンショットでは、MARKコメントに行が含まれています。

  1. //#MARK: - テキストメソッド(LINE)
  2. //#MARK:テキストメソッド(NO LINE)

これはMARKコメントでのみ機能します。







swift