#pragmaマークの意味は何ですか?なぜ#pragmaマークが必要なのですか?


279

#pragmaXcode のマークの目的は何ですか?.mファイル内の場所は重要ですか?一部#pragmaは他のすべての前に来る必要がありますか?

  • 彼らは存在する必要がありますか?
  • 新しいマークを追加できますか?なぜでしょうか?何が原因ですか?
  • マークを削除しても害はありますか?したいですか?


個人的には嫌いです。真剣に、あなたはいつもメソッドをどこに置く必要があるのか​​考えたいですか?単一の責任原則に注意を向けるなど、整理しておくべきはるかに重要な事項があります
ブラッドトーマス

2
迅速な言語の場合#プラグママークは機能しません。使用#MARKまたは#FIXMEまたは#TODOは、より多くの情報のために、このリンクをチェックstackoverflow.com/a/33040068/1753005
Jayprakash Dubeyさん

回答:


315

#pragma markディレクティブは、メソッドに直接アクセスするためのメニューのXcodeに表示されます。それらはプログラムにまったく影響を与えません。

たとえば、Xcode 4で使用すると、これらのアイテムがジャンプバーに直接表示されます。

pragma mark -ラインを作成するスペシャルがあります。

ここに画像の説明を入力してください


答えを評価してください-新しいXCodeでプラグママークがどのように見えるかを示す更新された回答を投稿できますか(そのメニューで、または現在どこにあるか)?
user7804781 2018

Pythonに相当するものはありますか?
エドワードフォーク2019年

@EdwardFalkこれはIDE固有なので、実際にはIDE /テキストエディターに依存します
Michael Ozeryansky

私のGCCコンパイラーは警告foo.h:52:0:警告:#pragma mark [-Wunknown-pragmas] #pragma mark-を無視しています-これは致命的ではありません。したがって、gccはおそらく「-」を認識していません。
Kemin Zhou

55

#pragma markメソッドのグループにタグを付けるために使用されるため、ジャンプバーからメソッドを簡単に見つけて検出できます。コードファイルが約1000行に達し、ジャンプボックスのカテゴリからメソッドをすばやく見つけたい場合に役立ちます。

長いプログラムでは、メソッド名を覚えて見つけるのが難しくなります。したがって、プラグママークを使用すると、メソッドをその作業に応じて分類できます。たとえば、テーブルビュープロトコルメソッド、アラートビューメソッド、初期化メソッド、宣言などのタグをタグ付けしました。

#pragma markXCodeの機能ですが、コードには影響しません。コーディング中にメソッドを簡単に見つけられるようにするだけです。


21

簡単に言えば、 #pragma mark -メソッドの分類に使用されているため、メソッドを簡単に見つけることができます。長いプロジェクトに非常に役立ちます。


13

私が探していた情報を追加するだけpragma markです。Xcode固有なので、別のIDEで開いているC ++プロジェクトを処理しても、そこには何の影響もありません。たとえば、Qt Creatorでは、メソッドのカテゴリは追加されず、警告/エラーも生成されません。

編集

#pragmaCプログラミング言語からのプリプロセッサディレクティブです。その目的は、コンパイラーに実装依存の情報を指定することです。つまり、各コンパイラーは、このディレクティブを必要に応じて解釈することを選択できます。とはいえ、コード自体を変更/影響しない拡張機能と見なされます。したがって、コンパイラはそれを無視することもできます。

Xcodeは、それを利用#pragmaして独自の方法で使用するIDE です。重要なのは、#pragmaXcode ではなく、Objective-Cに固有のことです。


11

大きくて長いクラスで100行以上のコードがある場合、モニター画面にはすべてを表示できないため、クラスの概要(ドキュメントアイテムとも呼ばれます)を表示できません。クラスの概要を見たいときがあります。一目ですべてのメソッド、定数、プロパティなど。XCodeでCtrl + 6を押すと、クラスの概要を確認できます。ポップアップのようなウィンドウ、つまりジャンプバーが表示されます。

デフォルトでは、このジャンプバーにはバケット/セクションがありません。長いリストの1つにすぎません。(ただし、ジャンプバーが表示されたときに入力を開始するだけで、ジャンプバーの項目を検索できます)。ここでの必要性が来ますpragma mark

ジャンプバーにセクションを作成する場合は、関連する説明のあるプラグママークを使用できます。問題となっている添付のスナップショットを参照してください。「ライフサイクルの表示」と「専用セクション」は、pragma marks によって作成されたセクションです。


10

プラグマがコンパイラーのディレクティブであることを示すためにdocを検索しているときに、このNSHipster記事がうまく機能していることを発見しました。

読書を楽しんでいただければ幸いです


7
#pragma mark - NSSecureCoding

「プラグマ」の主な目的は、開発者が参照することです。ここに画像の説明を入力してください

膨大な数のコーディング行からメソッド/関数を簡単に見つけることができます。

Xcode 11以降:

上にマーカーライン

// MARK: - Properties

上部と下部のマーカー線

// MARK: - Properties - 

下部のみのマーカーライン

// MARK: Properties -

だから私は行を削除できますか?私の脳のためのスペースの無駄。

1
#pragma-markを削除してもコードの機能には影響しませんが、コードが読みにくくなる可能性があります。本当に必要ない場合は、削除できます。
Jeba Moses
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.