21

Xcode バージョン 4.0 では、メソッド内の #pragma マークがジャンプ バーに表示されなくなっていることに気付きました。表示されている #pragma マークは、メソッド間にあるものだけです。

これらの #pragma マークを使用して、テーブルビューのさまざまなセクションに表示される情報をすばやく整理して取得できるようにしていましたが、その機能を取り戻したいと思っています。

それらを再び表示させる方法を知っている人はいますか?

4

13 に答える 13

19

私もこの問題を経験しています。最初のメソッドの前に追加されたプラグマ マークは表示されません。たとえば、これは機能しません。

@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

見た目はあまりきれいではありませんが、機能します。それが役立つことを願っています。

于 2012-11-19T11:50:12.900 に答える
8

xcode 3.xで機能していた構文を使用しているときにこの問題が発生し、xcode4では機能しなくなりました。

「プラグマ」だけを使っていました

#pragma - My Pragma Text

これは、xcode 3では正常に機能していましたが、xcode 4では、完全な構文を使用する必要があります。つまり、#pragmaの後には常に「mark」キーワードを続ける必要があります。

#pragma mark - My Pragma Text

編集

Xcode 6(ベータ4で修正済み)はファイル// MARK:に構文を使用しますswift

于 2011-04-24T02:27:37.137 に答える
2

そして明らかに、それらは最初の方法の前には機能しません。たとえば、これは機能しません。

#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;
}

私が間違っている場合はお知らせください。これが機能する場合は、修正されることを願っています!!

于 2012-10-23T21:25:29.933 に答える
2

それだけの価値があるので、バグレポート (12895229) を提出しましたが、提出されたものを見つけることができませんでした。

回避策のアイデアをありがとう。マクロに割り当てると、後で簡単に削除できます。

#定義WORK_AROUND_PRAGMA {}

私は、このような便利なもののためにグローバル マクロ ファイルを用意する傾向があります。ご存知のように、クイック エンコード/デコード、アクセサー (プロパティの前日) などです。

于 2012-12-17T21:11:35.473 に答える
2

同じ問題が発生しました。@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.

魅力のように機能します。

于 2013-02-02T10:52:38.230 に答える
2

どうやら 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 ...

基本的に、私は確認しました...

  • 行の前後に空白行が 1行あり#pragmaます。
  • の前後にスペースが 1 つだけあります-
  • プラグマ行がスペースで終わっていません。

アップデート

プロジェクトがどこかで壊れている場合、上記のルールでは不十分な場合があることに気付きました。(いくつかのソースを新しいプロジェクトに移動しようとしましたが、正しく表示されました)。だから私がしたことは、プロジェクトを閉じて、その派生データをオーガナイザーから削除し、これら2つのフォルダーも削除することです

MyProject.xcodeproj/project.xcworkspace/
MyProject.xcodeproj/xcuserdata/

したがって、次にプロジェクトを開くと、Xcode はそれらを再生成します :)

これで、すべてのソースが再び正常になりました:)

于 2012-08-15T11:44:38.347 に答える
2

メソッド内 (またはその他の場所) のマークについては、キーワードTODO:をコメントとして使用できるようになりました。

このような:

// TODO: some text

これが利用可能になったxcodeのバージョン(おそらく4.5以降)についてはわかりませんが、最新のもので利用できます。

ここに画像の説明を入力

于 2012-11-14T23:28:02.840 に答える
2

#pragma マークは以前の xcode のメソッド内で機能しましたか? 私は本当にそれらを使いたいのですが、あなたが言ったように、それはメソッド間でのみ機能し、メソッド内では機能しないので、本当に便利です.

XCodeジャンプバーに追加するメソッド内のセクションにコードを追加する方法について誰かがアイデアを持っている場合はBUMP ...

于 2011-05-15T16:07:51.640 に答える
1

user1639164 - 衒学的なリスクを冒してでも、「95%」正しいと思います。Xcode で最初のメソッドの前にプラグマを表示できることがわかりました。ソース ファイル内のコードの最初のチャンクがたまたまメソッドではなく通常のプロシージャである場合、プラグマが表示されます。例えば

NSString * localizedString (NSString * key)
{
// My code here…
}

# pragma mark - app-delegate startup

- (id) init
{
  self = [super init];
  if (self)… etc

これは、ボイラープレート アプリのデリゲート コードからの抜粋です。この場合、最初のメソッドの前にプラグマ表示されます。しかし、コードの最初のチャンクの前ではありません! :-) したがって、プラグマ解析機構は、少なくとも 1 つのルーチン (メソッドまたはその他) が見られるまで、そのお尻をギアに入れることができないかのようです。おっしゃるとおり、早く治りますように。

于 2012-10-30T23:19:32.313 に答える
1

RantriXで正解を明らかにするには…</p>

最初#pragma markのものがジャンプ バーのコンテキスト メニューに表示されない場合は、中かっこのペアを追加します。(Xcode バージョン 4)

たとえば、次のように変更します。

@implementation MainMenu

#pragma mark Lifecycle

これに(中括弧に注意してください):

@implementation MainMenu
{

}

#pragma mark Lifecycle
于 2013-05-21T21:13:05.843 に答える