web-dev-qa-db-ja.com

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

Xcodeの#pragmaマークの目的は何ですか? .mファイル内の場所は重要ですか?いくつかの#pragmaは他のすべての前に来るべきですか?

  • 彼らは出席しなければなりませんか?
  • 新しいマークを追加できますか?なぜだろうか?何が原因ですか?
  • マークを削除しても害はありませんか?したいことはありますか?
270
JAM

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

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

行を作成する特別なpragma mark -があります。

enter image description here

308
Erre Efe

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

長いプログラムでは、メソッド名を覚えて見つけるのが難しくなります。 プラグママークを使用すると、メソッドの動作に応じてメソッドを分類できます。たとえば、Table View Protocolメソッド、AlertViewメソッド、Initメソッド、宣言などのタグをタグ付けしました。

#pragma markはXCodeの機能ですが、コードには影響しません。コーディング中にメソッドを見つけやすくするだけです。

53
dayitv89

単純なWordでは、#pragma mark -がメソッドの分類に使用されているため、メソッドを簡単に見つけることができます。長いプロジェクトに非常に便利です。

20
Gamer

私が探していた情報を追加するために:pragma markはXcode固有であるため、異なるIDEで開くC++プロジェクトを扱う場合、そこには何の効果もありません。たとえば、Qt Creatorでは、メソッドのカテゴリを追加したり、警告/エラーを生成したりしません。

編集

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

XcodeはIDEで、#pragmaを利用して独自の方法で使用します。ポイントは、#pragmaはXcodeではなく、Objective-C固有のものでさえあるということです。

13
Maxim Chetrusca

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

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

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

11
Saurabh Hooda

プラグマがどのようにコンパイラーのディレクティブであるかを示すdocを検索していると、この NSHipsterの記事 が非常にうまく機能していることがわかりました。

読書を楽しんでください

9
teriiehina
#pragma mark - NSSecureCoding

「プラグマ」の主な目的は、開発者の参照用です。 enter image description here

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

5
Jeba Moses