Objective Cでは、#pragma mark
を使用して、シンボルナビゲータでコードの一部にマークを付けることができます。これはCのプリプロセッサコマンドなので、Swiftでは使用できません。 Swiftでこれに代わるものがありますか、それとも私は醜いコメントを使用する必要がありますか?
あなたは// MARK:
を使うことができます
とにかくクラス拡張の自由な使用がより良い習慣であるかもしれないという議論もありました。エクステンションはプロトコルを実装することができるので、あなたはすることができます。すべてのTable Viewデリゲートメソッドを拡張機能に配置し、コードを#pragma mark
で可能なレベル以上の意味レベルでグループ化します。
拡張機能とプラグママークの使用に興味がある人のために(最初のコメントで述べたように)、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
}
}
それはまた、必ずしもベストプラクティスではありませんが、これはあなたが好きならばあなたがそうする方法です。
Xcode 5までは、プリプロセッサディレクティブ#pragma mark
が存在していました。
Xcode 6から、あなたは// MARK:
を使わなければなりません
これらのプリプロセッサ機能により、ソースコードエディタの機能ドロップダウンボックスに何らかの構造を取り込むことができます。
いくつかの例 :
// MARK:
- >の前に水平方向の区切り線が付きます
// MARK: your text goes here
- >ドロップダウンリストに「あなたのテキストはここにあります」を太字で表示します。
// MARK: - your text goes here
- >ドロップダウンリストで、「あなたのテキストはここに入っています」を太字で表示します。
更新:スクリーンショットを追加 '一部の人々はまだこれに問題があるようです:
Pragma mark - [SOME TEXT HERE]
は Objective-Cで複数の関数をグループ化するために で行区切りで使用されていました。
Swift では、MARK, TODO OR FIXME
を使ってこれを達成できます。
私。 MARK: //MARK: viewDidLoad
これにより、viewDidLoadの下にグループ化された関数を含む 水平線 が作成されます(スクリーンショット1)。
ii。 TODO: //TODO: - viewDidLoad
これは TODO: - viewDidLoad categoryの下に機能をグループ化します(スクリーンショット2に表示)
iii。 FIXME: //FIXME - viewDidLoad
これにより、 FIXME: - viewDidLoad categoryの下に機能がグループ化されます(スクリーンショット3)。
Objective-Cコードでは、Xcodeは// MARK: - foo
よりも移植性が高い#pragma
のようなコメントを検出します。しかし、これらも取り上げられていないようです(まだ?)。
編集:Xcode 6 beta 4で修正されました。
Xcode Jump Barに関するAppleの公式文書: ジャンプバーにコード注釈を追加します
!!!:
と???:
は表示できないことがあります。
#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) {
...
}
}
今朝WWDCでSwiftラボのアップルエンジニアに、現時点で#pragmaや同等のものは現在ないことを確認し、彼らはこれをバグと見なしており、まもなくベータ2が来ると思いますので、私は希望します。
とにかく、それは途中です。
Xcodeは、コードに注釈を付けるために// MARK:、// TODO:、および// FIXMEのランドマークをサポートし、それらをジャンプバーに表示するようになりました
Swiftに#pragma_mark
を追加する方法は3つあります。
1)// MARK: - your text here -
2)// TODO: - your text here -
3)// FIXME: - your text here -
注:追加区切り文字に-
を使用します
つかいます
// MARK: SectionName
または
// MARK: - SectionName
これにより、プラグママークの上に1行が表示され、読みやすくなります。
簡単に追加するだけで
// MARK: - <#label#>
あなたのコードスニペットに。
別の方法 -
このように使ってください
private typealias SectionName = ViewController
private extension SectionName {
// Your methods
}
これは(プラグママークのように)マークを追加するだけでなく、コードをきれいに分離します。
プロのプログラマーは良いコードのためにこのタグを使わなければなりません。チームワークにも適しています。
// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live
このような方法は見つけやすいです
//MARK:
がseemになりませんXcode 6.3.2で私のために働きます。しかし、これは私が動作させる/に対して行ったことです。
1)コード
import Cocoa
class MainWindowController: NSWindowController {
//MARK: - My cool methods
func fly() {
}
func turnInvisible() {
}
}
2)jump bar
では、//MARK
:コメントを追加しても何も変わらないようです。しかし、ジャンプバーの右端の名前をクリックすると、私の場合はMainWindowController(with a leading C icon)
と表示され、// MARK:コメントの効果を示すポップアップウィンドウが表示されます。つまり、 "My cool methods"と表示されます。
3)私は、コード内のメソッドの1つをクリックすると、そのメソッドがジャンプバーの一番右のエントリになることにも気付きます。 MainWindowController(with a leading C icon)
をジャンプバーの一番右のエントリにするためには、私は自分のメソッドの上にある空白をクリックしなければなりません。
Appleは Building Cocoa Apps の最新バージョンで述べている、
Swiftコンパイラはプリプロセッサを含みません。代わりに、コンパイル時の属性、ビルド構成、および言語機能を利用して同じ機能を実現します。このため、Swiftではプリプロセッサディレクティブはインポートされません。
#文字は、まださまざまなビルド構成やそのようなものを扱う方法のように見えますが、プラグマの中でほとんどの前処理の必要性を減らし、他の言語機能に完全に転送しようとしているようです。おそらくこれは、PlaygroundsとREPLが完全にコンパイルされたコードに可能な限り近い動作をするのを助けるためです。
これを試して:
// MARK: Reload TableView
func reloadTableView(){
tableView.reload()
}
やることアイテムを追加する:TODO:という接頭辞を付けてコメントを挿入します。例えば:// TODO:[あなたのしなければならないことのある項目]。
バグ修正のリマインダを追加します。接頭辞FIXME:を付けてコメントを挿入します。例:// FIXME:[あなたのバグ修正のお知らせ]。
見出しを追加する:接頭辞MARK:を付けてコメントを挿入します。例:// MARK:[あなたのセクションの見出し]。
区切り線を追加する:注釈の上に区切り記号を追加するには、注釈のコメント部分の前にハイフン( - )を追加します。例:// MARK: - [あなたのコンテンツ]。注釈の下に区切り記号を追加するには、注釈のコメント部分の後にハイフン( - )を追加します。例:// MARK:[あなたのコンテンツ] - 。