Objective-C 基礎編 Vol1

2010/05/01

触ってれば何となるかな?と思ったけど、 さすがにコーディングはJava系じゃないので厳しいわ。 文法がさっぱり馴染めない(T_T) X-codeの使い方は何とかなりそうですが。

と言う事で、基礎の基礎からGW中にマスターするぞ! 帰省前に本買わなきゃいかんが、とりあえずネットで。

混沌のiPhoneアプリケーション工房を参考にさして貰いました。

コンパイラディレクティブ

Objective-C 言語のクラスの宣言は、予約語や構文ではなく コンパイラディレクティブを利用します。 コンパイラディレクティブは、 コンパイラに Objective-C で拡張されたクラスの宣言や実装などに用いられ、 @ マークで始まるという特徴を持ちます。

ふむ。 @ってプロパティ(?)にも出てこなかったっけ? それも含めてコンパイラディレクティブ? 取りあえず進む。

.hファイルの場合

クラスを宣言するコンパイラディレクティブは@interface で始まり@end .hはインターフェイス定義ファイルって理解でいいのかに?

@interface クラス名 : 親クラス名
{
    インスタンス変数宣言
}
メソッド宣言
@end

.mファイルの場合 .mは実装ファイル?

@implementation クラス名
メソッド定義
@end

メソッド宣言

- (戻り値型) メソッド名 : 仮引数リスト ... ;

・「-」で始まるメソッドをインスタンスメソッド(動的) ・「+」 で始まるメソッドをスタティックメソッド(静的) ・メソッド宣言では型を 「( )」 で囲む ・メソッドが引数を受け取る場合は、コロン : に続いて仮引数リストを指定

この書き方が紛らわしい。 仮引数リストが、これまたよくわからん。

インスタンス生成・メッセージ式

一般的なオブジェクト指向型言語では new 演算子が存在するが、Objective-Cにはない! って事で登場するのが「alloc クラスメソッド」(ファクトリメソッド)。 インスタンス生成はルートクラスが管理し「+ alloc;」として定義されている。

そして「メッセージ式」と呼ばれる方法で、以下のように呼び出す。

[クラス名 メソッド名:引数リスト...]

なるほど!これが「動的なメソッドの呼び出し」ってことなのね。 処理に時間はかかるが、合理的な記述ができるというカラクリか。

インスタンス参照を使わず、メッセージを入れ子にしてメッソドを呼び出す。

[[Test alloc] method]

なるほど!なるほど! いまさら何か書いてるコードの意味が理解できてきた! でも、やっぱ見にくくないかい?w