第2章 Xcode を使ってみましょう | ||
ホーム | メール | |
目次 | < 前ページ 次ページ > |
次にObjective-Cでコーディングされたプログラムを作成します。とは言っても今回もHello, World!と表示されるだけです。そして今回もまたプロジェクトのヒナ型を使って、一行もコーディングすることなくObjective-Cによるコマンドラインツールを作ります。helloCプロジェクトウィンドウがまだ開いている場合はクローズボタンで閉じてください。コンソールウィンドウも同時に閉じられます。
次の手順に従って新しいプロジェクトを作成します。
グループとファイルペインの一番上のプロジェクト名を選択すると右側のファイル名ペインにプロジェクトに含まれているすべてのファイルが表示されることはどのプロジェクトでも同じです。今回も上から順番に説明していきます。
helloObjC.mのコードを見てみましょう。helloObjC.mをダブルクリックして別ウィンドウにhelloObjdC.mのコードを表示させるか、helloObjC.mを選択だけしてプロジェクトウィンドウの下部にhelloObjC.mのコードが表示させます。短いコードを確認するにはプロジェクトウィンドウの下部に表示させるほうが便利かもしれません。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); [pool drain]; return 0; }
NSAutoreleasePool * pool“自動解放プール”のポインタpoolを宣言しています。この自動解放プールはメモリ管理に使われます。メモリ管理については6章で詳しく説明いたします。
[[NSAutoreleasePool alloc] init];この記述方法に慣れるまでは相当に違和感を覚えることだと思います。この大括弧(角括弧)で囲まれた部分は“メッセージ式”と呼ばれるObjective-C特有の記述方法です。詳しくは後ほど説明いたしますが上記の式は[NSAutoreleasePool alloc]というメッセージ式の戻り値に対して再度“init”というメッセージを送っています。メッセージ式はこのように“ネスト”(入れ子に)することができます。このメモリ自動解放プールには将来解放して欲しいオブジェクトが登録されます。“解放”とはそのオブジェクトを破棄して占有していたメモリ領域を解放すること(再び他の用途で使えるようにすること)を意味しています。しかし現段階では、まだ“オブジェクト”の説明をしていません。この部分の説明が理解できなくて当然です。気にせず先に進んでください。
NSLog(@"Hello, World!");このコードは見ていただいて分かるとおりC言語の関数のかたちをしています。Foundationフレームワークのなかで定義されているObjective-Cの関数です。 この関数の機能はC言語のprintfとほぼ同じです。C言語と同じ変換指定子を使うことができます。文字列の前に@マークが付いていますが、これはその文字列がC言語のchar型配列ではなくObjective-Cのオブジェクトであることを表しています。とは言っても、ここでもやはり「オブジェクト」が理解できていなくて当然です。先ほどと同じく気にせずに先に進んでください。なおこの@マークはコードのなかでCとObjective-Cを区別するために使われます。前述の[ ] (角括弧)と@マークが出てくれば、そこはObjective-Cでコーディングされていると思ってください。
[pool drain];4行目で作成したメモリ自動解放プールに登録されたオブジェクトを解放しています。
では「実行」メニューから「コンソール」を選んでコンソールウィンドウを表示し、「ビルドと実行」ボタンをクリックしてください。NSLogはprintfと違い「Hello, World!」の前にタイムスタンプやツール名などが表示されます。
図コンソール3
コンソール画面が文字で一杯になって見にくくなってきた場合はツールバー右端の“ログを消去”をクリックしてください。コンソール画面が白紙に戻ります。
確認が終わりましたらプロジェクトウィンドウを閉じてください。プロジェクトウィンドウを閉じるとコンソールウィンドウも同時に閉じます。逆にコンソールウィンドウを閉じてもプロジェクトウィンドウが一緒に閉じることはありません。
目次 | < 前ページ 次ページ > |