2009年09月22日
Objective-C入門その13:main.m一気読み
テーマ:Objective-C入門
いよいよ最後!Hello,world! はもうばっちり!?
長かったですねー。
ここまでの道のり。
この調子でiPhoneアプリなんて作れるのかよって、思いましたか?
Me, too.
なにはともあれここまでやってきました。
アプリケーションデリゲートクラスと、ビューコントローラークラスは実装済みです。
Objective-C入門その9:HelloWorldAppDelegate解決編(前編)
Objective-C入門その10:HelloWorldAppDelegate解決編(後編)
Objective-C入門その11:MyViewController.h一気読み
Objective-C入門その12:MyViewController.m一気読み
残すはアプリケーションが起動して最初に呼ばれる関数。
main関数のお話です。
ざっと読んでみましょう。
main.m
起動時に最初に呼ばれるmain関数。
#import <UIKit/UIKit.h>
UIKitフレームワークの読み込みですね。
ココでもやってます。
int main(int argc, char *argv[]) {
あれ?何この書き方。と思ったアナタ。
正解。
ここに来てまさかの裏切り。
コレ、C言語で関数を定義する書き方です。
ずぅ...っと前にお話ししましたが、
Objective-C入門その3:「@」って何だ?
Objective-C言語は、
「オブジェクティブ指向以外の部分は、C言語を使う」という、
インサイト的ハイブリッド言語になっています。
ここは、C言語の守備範囲なんです。
文句の1つも言いたくなりますが、おとなしくC言語で読みましょう。
Objective-Cよりはシンプルですので。
戻り値の型 関数名(引数1の型 引数1の名前, 引数2の型 引数2の名前){
です。
整数型の戻り値を持つmainという関数を設定
-引数1は整数型の argc
-引数2は文字型のポインタ配列※ *argv[]
※ポインタ配列の説明は長くなりそうですので省略しますが、
とりあえずここでは「1個じゃなく、複数の単語(文字列)」を指してるのね、
と覚えておいてください。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
で、C言語の中に現れるObjective-C。と。
まさにカオス。
・NSAutoreleasePoolの生成
・初期化
・poolという変数への格納
を行っています。
NSAutoreleasePoolっていうのは「自動インスタンス破棄マシーン」のことで、
[pool release]とセットで使います。
細かいことはまだよくわかりませんので、
このへんは「ふんふ~ん」と読み流しておきましょう。
int retVal = UIApplicationMain(argc, argv, nil, nil);
で、こいつがmain関数の本体。
UIApplicationMainの実行です。
コイツを実行すると、
同じくxcodeに含まれる「info.plist」というプロパティリストの中の、
「Main nib file base name」に設定されているxibファイルが呼び出されます。
Hello, Wolrd!では「MainWindow.xib」が登録されています。
で、このMainWindow.xibが呼び出されると、
そこに設定されている「HelloWorldAppDelegate」の「applicationDidFinishLaunching」が呼ばれ、
アプリケーションが初期化されるわけです。
...。
とりあえず。
main関数を呼ぶと、
Windowが初期化されて、
AppDelegateが呼ばれる。
くらいにしておきましょう。
たぶんそのくらいで充分です。
今まで見てきた各種クラスも、誰かが実行してくれないと動きませんので、
「ああ、mainが動くとAppDelegateが動いて、AppDelegateがViewControllerを動かしているのね」
っていうつながりはとっても大事です。そこがわかればとりあえずOK。
[pool release];
先ほど出てきましたね。
自動インスタンス破棄マシーン」です。
リリースすると、インスタンスを全て破棄します。
return retVal;
戻り値として、アプリケーションの初期化結果を戻します。
UIApplicationMainの処理がしくじると、
ここで「エラー」が戻ってくるわけです。
}
で、終了、と。
なんだか。
わかったようなわからないような。
それもそのはず。
ほとんどがお作法のお話だったんです。
もうお気付きかと思いますが、
ぶっちゃけこのHello, Wolrd!、
オリジナルでちゃんと書いているのは、
MyViewControllerに出てくるupdateStringだけなんです。
Objective-C入門その11:MyViewController.h一気読み
Objective-C入門その12:MyViewController.m一気読み
あとはほとんどコピペで良し。
コピペ部分を除けば、確かにコイツは最初のプログラム「Hello, World!」です。
なんってめんどくせぇ言語なんだ。Objective-C。
ってことを理解するためのサンプルプログラムでした。
でも、ここでくじけちゃもったいない!
お作法なんて、そのうち身体が勝手に覚えます。
楽しいのは、自分で作るオリジナルの部分です。
まず最初のハードルは越えました。
次回から、オリジナルプログラムをバンバン作っていきましょう!
今日も“駄文”兼“長文”最後まで読んでいただいてありがとうございます!
☆ペタ大歓迎です、押してくれると転げ回って喜びます☆

☆読者登録大歓迎です、アナタは神様ですか☆

☆こちらもクリックを是非、ニッポンにサルできの流れを!☆

長かったですねー。
ここまでの道のり。
この調子でiPhoneアプリなんて作れるのかよって、思いましたか?
Me, too.
なにはともあれここまでやってきました。
アプリケーションデリゲートクラスと、ビューコントローラークラスは実装済みです。
Objective-C入門その9:HelloWorldAppDelegate解決編(前編)
Objective-C入門その10:HelloWorldAppDelegate解決編(後編)
Objective-C入門その11:MyViewController.h一気読み
Objective-C入門その12:MyViewController.m一気読み
残すはアプリケーションが起動して最初に呼ばれる関数。
main関数のお話です。
ざっと読んでみましょう。
main.m
起動時に最初に呼ばれるmain関数。
#import <UIKit/UIKit.h>
UIKitフレームワークの読み込みですね。
ココでもやってます。
int main(int argc, char *argv[]) {
あれ?何この書き方。と思ったアナタ。
正解。
ここに来てまさかの裏切り。
コレ、C言語で関数を定義する書き方です。
ずぅ...っと前にお話ししましたが、
Objective-C入門その3:「@」って何だ?
Objective-C言語は、
「オブジェクティブ指向以外の部分は、C言語を使う」という、
インサイト的ハイブリッド言語になっています。
ここは、C言語の守備範囲なんです。
文句の1つも言いたくなりますが、おとなしくC言語で読みましょう。
Objective-Cよりはシンプルですので。
戻り値の型 関数名(引数1の型 引数1の名前, 引数2の型 引数2の名前){
です。
整数型の戻り値を持つmainという関数を設定
-引数1は整数型の argc
-引数2は文字型のポインタ配列※ *argv[]
※ポインタ配列の説明は長くなりそうですので省略しますが、
とりあえずここでは「1個じゃなく、複数の単語(文字列)」を指してるのね、
と覚えておいてください。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
で、C言語の中に現れるObjective-C。と。
まさにカオス。
・NSAutoreleasePoolの生成
・初期化
・poolという変数への格納
を行っています。
NSAutoreleasePoolっていうのは「自動インスタンス破棄マシーン」のことで、
[pool release]とセットで使います。
細かいことはまだよくわかりませんので、
このへんは「ふんふ~ん」と読み流しておきましょう。
int retVal = UIApplicationMain(argc, argv, nil, nil);
で、こいつがmain関数の本体。
UIApplicationMainの実行です。
コイツを実行すると、
同じくxcodeに含まれる「info.plist」というプロパティリストの中の、
「Main nib file base name」に設定されているxibファイルが呼び出されます。
Hello, Wolrd!では「MainWindow.xib」が登録されています。
で、このMainWindow.xibが呼び出されると、
そこに設定されている「HelloWorldAppDelegate」の「applicationDidFinishLaunching」が呼ばれ、
アプリケーションが初期化されるわけです。
...。
とりあえず。
main関数を呼ぶと、
Windowが初期化されて、
AppDelegateが呼ばれる。
くらいにしておきましょう。
たぶんそのくらいで充分です。
今まで見てきた各種クラスも、誰かが実行してくれないと動きませんので、
「ああ、mainが動くとAppDelegateが動いて、AppDelegateがViewControllerを動かしているのね」
っていうつながりはとっても大事です。そこがわかればとりあえずOK。
[pool release];
先ほど出てきましたね。
自動インスタンス破棄マシーン」です。
リリースすると、インスタンスを全て破棄します。
return retVal;
戻り値として、アプリケーションの初期化結果を戻します。
UIApplicationMainの処理がしくじると、
ここで「エラー」が戻ってくるわけです。
}
で、終了、と。
なんだか。
わかったようなわからないような。
それもそのはず。
ほとんどがお作法のお話だったんです。
もうお気付きかと思いますが、
ぶっちゃけこのHello, Wolrd!、
オリジナルでちゃんと書いているのは、
MyViewControllerに出てくるupdateStringだけなんです。
Objective-C入門その11:MyViewController.h一気読み
Objective-C入門その12:MyViewController.m一気読み
あとはほとんどコピペで良し。
コピペ部分を除けば、確かにコイツは最初のプログラム「Hello, World!」です。
なんってめんどくせぇ言語なんだ。Objective-C。
ってことを理解するためのサンプルプログラムでした。
でも、ここでくじけちゃもったいない!
お作法なんて、そのうち身体が勝手に覚えます。
楽しいのは、自分で作るオリジナルの部分です。
まず最初のハードルは越えました。
次回から、オリジナルプログラムをバンバン作っていきましょう!
今日も“駄文”兼“長文”最後まで読んでいただいてありがとうございます!
☆ペタ大歓迎です、押してくれると転げ回って喜びます☆

☆読者登録大歓迎です、アナタは神様ですか☆

☆こちらもクリックを是非、ニッポンにサルできの流れを!☆
同じテーマの最新記事
- Objective-C入門その12:M… 09月21日
- Objective-C入門その11:M… 09月18日
- Objective-C入門その10:H… 09月17日
- 最新の記事一覧 >>











