Objective-C = C + 変態マクロ

事前知識無しでObjective-Cのプログラムを読もうとしたら無理だったのでメモ代わりにまとめておく。

Objective-CはCにオブジェクトシステムがくっついたもの

C + オブジェクトシステム = Objective-C
同じオブジェクト指向でもC++とは全くの別物らしい。

メソッドの呼び出し方
[obj message:arg];
インスタンスの作り方
ClassName* n;
n = [[ClassName alloc] init];
クラスの定義のしかた
@interface MyClass : SuperClass {
  /* インスタンス変数の宣言 */
}

/* メソッドの宣言 */

@end
インスタンス変数の宣言のしかた

Cと同じ。

メソッドの宣言のしかた
- (Return value type) instance_method_name:(arg type)arg_name; /* インスタンスメソッド */
+ (Return value type) class_method_name:(arg type)arg_name;    /* クラスメソッド */
クラスの実装のしかた
@implementation MyClass {
 メソッドの宣言 {
    /* メソッドの実装 */
  }
}

メモリ管理

手動リファレンスカウント*1
インスタンスの参照カウントを増やすときはretain、減らすときはreleaseメッセージを送信する。
参照カウンタが0になるとインスタンスにdeallocメッセージが送信される。


とりあえず、インスタンスが不要になったらrelease送信すればいいらしい。

今日わかったこと

今日わからなかったこと

  • autoreleaseって何だろう?
  • RubyのModuleみたいなのを使うにはどうすればいいんだろう?

*1:今はGCがついてるみたい。