10:20■基本はmain.mから!では、前回作成したプロジェクトのソースコードを見ながら、iphoneプログラムの構造を理解していくことにしましょう。main.mからです。これは、ファイル名からも想像がつくように、main関数が記述されたソースコードです。アプリを実行すると、まずここにある処理が実行されることになります。ここでは、最初に以下のような#import文が記述されていますね。<UIKit/UIKit.h>このUIKitというのが、iOS用のGUIなどを提供するフレームワークです。これを#importしておきます。これにより、UIKitのクラス(もちろん、Foundationも含めて)が利用可能となります。――続いて、main関数を記述します。init];最初に記述されているのは、NSAutoreleasePoolというクラスのインスタンスを作成するための文です。このクラスは、「オートリリース」というものを管理するためのものです。これは、Objective-Cにおけるメモリ管理に関するクラスです。Objective-Cではたくさんのオブジェクトが使われますが、これらは「使いっぱなし、作ったらそのまま放置」ではいけません。使い終わったらそれを解放するような処理をしておかないといけないのです。新しいObjective-Cでは「ガベージコレクション」といってオブジェクトを自動的に回収し破棄するような仕組みが用意されていますが、残念ながらiphoneではこれは使われません。このため、オブジェクトをきちんと管理する必要があります。オートリリースというのは、オブジェクトの管理の基本となるものです。これを最初に用意しておき、インスタンスを作成する際に、このオートリリースに組み込んでおいてやります。して、使い終わったところで最後にオートリリースのメソッドを呼び出してやると、登録されたオブジェクトをすべて開放してくれます。クラスを利用するときは、まず「オートリリースを用意し、使い終わったら開放」という処理を書くのが基本なのですね。これが、そのためのものです。最初にNSAutoreleasePoolのインスタンスをこうして用意しておくのです。nil);このUIApplicationMainというのは、UIKitに用意されている関数です。これにより、UIKitのGUIを使ったアプリケーションのメイン処理が起動します。GUIアプリケーションでは、メインループでイベントの処理をしたり、いろいろと複雑なことをしながらループを繰り返して動きます。これを一から作るのはちょっと不可能でしょう。UIKitのフレームワークに用意されているこの関数を呼び出すことで、そうした基本的なGUIアプリケーションの仕組みを使うメインループが実行される、というわけです。これは、プログラムのメインループを起動するものですから、これの実行が完了するということは、プログラムが終了するということでもあります。プログラムを終了するまで、処理はここに戻ってきません。retVal;メインループが終了して次に進む(つまりGUIアプリケーションの処理が完了する)と、最後にNSAutoreleasePoolインスタンスのreleaseを呼び出し、それからUIApplicationMainの返値をreturnしてプログラム終了となります。このreleaseが、NSAutoreleasePoolに登録されたオブジェクトを解放する処理です。――以上のように、main関数は短いけれどいろいろと重要なことが行われているのですね。これらはすべてGUIアプリケーションを起動し終了するための基本となるものですので、実際の開発においては、このコードを書き換えたりすることはまずありません。「main.mは、そういうものがあるとだけ覚えておけばいい」でしょう。オートリリースの仕組みなどは、これから何度も登場しますので、その考え方とNSAutoreleasePoolの基本的な使い方ぐらいはあわせて覚えておくとよいでしょう。SYODA-Tuyano.)※プログラムリストが表示されない場合AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。※libroに関する情報は、libroページを御覧下さい。よるサービスを使用して広告を表示しています。アドレス、電話番号は含まれません)。