2010-11-19

#pragma mark - Xcode のテキストエディタの使い方 #1

Xcode で Mac 用の Cocoa アプリや iOS 用の Cocoa Touch アプリのプロジェクトを作成すると、いくつかの Objective-C のソースファイルが生成される。これらのソースを開くと #pragma mark という記述が書かれていることがある。これは何なのか?

調べて(ググって)みたところ、Xcode のエディタで使われる情報だとわかった。具体的には、Xcode のエディタにある Function Menu の表示を見易くするためのものだった。この Function Menu はエディタの(ウィンドウでもペインでも)上部に置かれた一群の便利機能(Navigation Bar と呼ばれている)の一つで、ソースコード中からクラスや関数、メソッドの宣言、定義を見つけ出し、一覧にしてくれるものだ。メニューの項目を選ぶとエディタで該当する場所に飛ぶことができる。簡易クラスブラウザと言ったところか。

以下は、iPhone アプリのプロジェクトを作った際に生成されるソースファイルから、#pragma mark 部分だけを抜粋したものだ。

@implementation RootViewController


#pragma mark -
#pragma mark View lifecycle

[...snip...]

#pragma mark -
#pragma mark Table view data source

[...snip...]

#pragma mark -
#pragma mark Memory management

[...snip...]

@end

このファイルを Xcode のエディタで開き、Function Menu を表示させたスクショが→になる。元のソースと見比べてみると、#pragma mark がどういう風に使われるのかがおおよそわかる。

  • #pragma mark に「-」を付けると、Function Menu 中の区切り線になる。メニューから選択できない(該当する場所に飛べない)。
  • #pragma mark の後に付けたテキストが Function Menu 中のラベルになる。メニューから選択できる(飛べる)。

Xcode Workspace Guide: The Text Editor」によれば、この Function Menu で項目として表示できるのはこれだけじゃない。以下のようなコメントも表示させることができる。もちろん、メニューから選んで飛べる。

  • MARK:
  • TODO:
  • FIXME:
  • !!!:
  • ???:

「!!!:」と「???:」はこのマークだけで項目として有効になるが、他の 3 つはマークの後にテキストを付けた場合のみ有効になる。つまり「TODO:」や「FIXME:」だけでは Function Menu に表示されない。「TODO: put code to fetch the URL.」のように書く必要がある。

先に挙げたドキュメントによれば、Function Menu が機能するのは C、Objective-C、C++、Java、Perl、Python、および Ruby に対してのみだとのこと。

近頃の IDE はなんとなく使っていてもそれなりに使えてしまうから、何か困ったことにでも陥らない限りヘルプやドキュメントを読もうと思わない。けれど、それだと便利な機能のことを知らないままになってしまうのだろう。今回の #pragma mark と Function Menu のことも、調べて(ググって)みて初めて知ったわけだし。

ともあれ、Xcode で開発をするなら、エディタに関する「Xcode Workspace Guide: The Text Editor」は、ぜひとも読むべきだ。

関連リンク

関連記事

0 件のコメント:

コメントを投稿