Xcode バージョン 4.0 では、メソッド内の #pragma マークがジャンプ バーに表示されなくなっていることに気付きました。表示されている #pragma マークは、メソッド間にあるものだけです。
これらの #pragma マークを使用して、テーブルビューのさまざまなセクションに表示される情報をすばやく整理して取得できるようにしていましたが、その機能を取り戻したいと思っています。
それらを再び表示させる方法を知っている人はいますか?
私もこの問題を経験しています。最初のメソッドの前に追加されたプラグマ マークは表示されません。たとえば、これは機能しません。
@implementation RandomClass
#pragma mark - Getter Methods
- (void) firstMethod
{
}
@end
最初のメソッドが表示される前にプラグマ マークを作成するための簡単な回避策を次に示します。その前に空のブロックを追加するか、ブロック自体の中にプラグマ マークを配置することができます。
空のブロックを使用する:
@implementation RandomClass
{}
#pragma mark - Getter Methods
- (void) firstMethod
{
}
@end
空のブロック自体の内部にプラグマ マークを追加します。
@implementation RandomClass
{
#pragma mark - Getter Methods
}
- (void) firstMethod
{
}
@end
見た目はあまりきれいではありませんが、機能します。それが役立つことを願っています。
xcode 3.xで機能していた構文を使用しているときにこの問題が発生し、xcode4では機能しなくなりました。
「プラグマ」だけを使っていました
#pragma - My Pragma Text
これは、xcode 3では正常に機能していましたが、xcode 4では、完全な構文を使用する必要があります。つまり、#pragmaの後には常に「mark」キーワードを続ける必要があります。
#pragma mark - My Pragma Text
編集
Xcode 6(ベータ4で修正済み)はファイル// MARK:に構文を使用しますswift
そして明らかに、それらは最初の方法の前には機能しません。たとえば、これは機能しません。
#import "Person.h"
@implementation Person
#pragma mark - Convenience
// ===========================================================
// Class/Convenience Methods
// ===========================================================
+ (Person *)personWithName:(NSString *)name hourlyRate:(double)rate
{
Person *person = [[[Person alloc] initWithName:name rate:rate] autorelease];
return person;
}
私が間違っている場合はお知らせください。これが機能する場合は、修正されることを願っています!!
それだけの価値があるので、バグレポート (12895229) を提出しましたが、提出されたものを見つけることができませんでした。
回避策のアイデアをありがとう。マクロに割り当てると、後で簡単に削除できます。
#定義WORK_AROUND_PRAGMA {}
私は、このような便利なもののためにグローバル マクロ ファイルを用意する傾向があります。ご存知のように、クイック エンコード/デコード、アクセサー (プロパティの前日) などです。
同じ問題が発生しました。@implementation ...最初の「実際の」メソッドの前後にダミー メソッドを挿入します。プロジェクトの...-Prefic.pchファイルでこのメソッドを定義して、ジャンプ バーに表示されないようにします。
...-Prefix.pch に以下を追加します。
#define PLEASE_LET_PRAGMA_MARK_WORK - (void) pleaseLetPragmaMarkWork {}
そして、あなたの実装にリクエストを挿入してください:
@implementation anyClass
PLEASE_LET_PRAGMA_MARK_WORK
#pragma mark - This will show up.
魅力のように機能します。
どうやら Xcode のプラグマ パーサーにいくつかの問題があるようです。私の場合#pragma、構文を新しいものに統一することで、 s を再表示させることができました。
いくつかのプラグマを含む均一で乱雑なコードのチャンクを持たない代わりに:
// Code ...
#pragma mark -
#pragma mark UITextViewDelegate Protocol
// More code ...
# pragma mark - Important stuff
// Even more code ...
すべてを次のように変更しました:
// Code ...
#pragma mark - UITextViewDelegate Protocol
// More code ...
# pragma mark - Important stuff
// Even more code ...
基本的に、私は確認しました...
#pragmaます。-。アップデート
プロジェクトがどこかで壊れている場合、上記のルールでは不十分な場合があることに気付きました。(いくつかのソースを新しいプロジェクトに移動しようとしましたが、正しく表示されました)。だから私がしたことは、プロジェクトを閉じて、その派生データをオーガナイザーから削除し、これら2つのフォルダーも削除することです
MyProject.xcodeproj/project.xcworkspace/
MyProject.xcodeproj/xcuserdata/
したがって、次にプロジェクトを開くと、Xcode はそれらを再生成します :)
これで、すべてのソースが再び正常になりました:)
メソッド内 (またはその他の場所) のマークについては、キーワードTODO:をコメントとして使用できるようになりました。
このような:
// TODO: some text
これが利用可能になったxcodeのバージョン(おそらく4.5以降)についてはわかりませんが、最新のもので利用できます。

#pragma マークは以前の xcode のメソッド内で機能しましたか? 私は本当にそれらを使いたいのですが、あなたが言ったように、それはメソッド間でのみ機能し、メソッド内では機能しないので、本当に便利です.
XCodeジャンプバーに追加するメソッド内のセクションにコードを追加する方法について誰かがアイデアを持っている場合はBUMP ...
user1639164 - 衒学的なリスクを冒してでも、「95%」正しいと思います。Xcode で最初のメソッドの前にプラグマを表示できることがわかりました。ソース ファイル内のコードの最初のチャンクがたまたまメソッドではなく通常のプロシージャである場合、プラグマが表示されます。例えば
NSString * localizedString (NSString * key)
{
// My code here…
}
# pragma mark - app-delegate startup
- (id) init
{
self = [super init];
if (self)… etc
これは、ボイラープレート アプリのデリゲート コードからの抜粋です。この場合、最初のメソッドの前にプラグマが表示されます。しかし、コードの最初のチャンクの前ではありません! :-) したがって、プラグマ解析機構は、少なくとも 1 つのルーチン (メソッドまたはその他) が見られるまで、そのお尻をギアに入れることができないかのようです。おっしゃるとおり、早く治りますように。
RantriXで正解を明らかにするには…</p>
最初#pragma markのものがジャンプ バーのコンテキスト メニューに表示されない場合は、中かっこのペアを追加します。(Xcode バージョン 4)
たとえば、次のように変更します。
@implementation MainMenu
#pragma mark Lifecycle
これに(中括弧に注意してください):
@implementation MainMenu
{
}
#pragma mark Lifecycle