iPhone2.0以降,Leopard以降は,Obj-C2.0となった.ガーベッジコレクションをサポートし,今までとは若干違う部分が増えた様子.
iPhoneのプログラミングをするかもしれないし,ちょっと勉強してみる.
※参考文献
http://devworld.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_3.html
http://journal.mycom.co.jp/column/objc/index.html
※アクセサ
以前の場合,@publicで直接アクセスするようにできた.

@interface Hoge : NSObject {
@public
NSString*	name;
}
@end
〜
Hoge* obj = [[Hoge alloc] init];
obj->name = @"test";

危険だけど.以下がObjective-C2.0のとき.

@interface Hoge : NSObject {
NSString*	name_;
}
@property (retain) NSString* name;
@end
@implementation Hoge
@synthesize name = name_;
@end

@synthesizeを宣言すると属性に応じたアクセサが自動的に生成される.
このため,上のコードでは,以下のようにアクセスできるようになる.

Hoge* obj = [[Hoge alloc] init];
obj.name = @"test";
NSLog( obj.name );

()の中は属性.属性には,以下のようにretain,assign,copy,nonatomicなどがある様子.
・getter=getterName, setter=setterName,アクセサのメソッドの名前を付けられる
・readonly,明示的に書き込みを禁止する
・readwrite,デフォルト.
・assign,参照だけを渡す
・retain,参照だけではなく,
・copy,参照元をコピーして,そのコピーしたものを保存.
・nonatomic,スレッドセーフ関連?マルチスレッド時に確実にアクセスできるようにするatomic設定を非設定にする属性(多分).
たとえば,retainの場合は,以前のObj-C1.0だとこんなコードのアクセサが提供されると考える.

- (void) setName:(NSString*) input {
if( name_ != input ) {
if( name_ != nil )
[name_ release];
name_ = [input retain];
}
}

なーるほどね.
ということは,iPhone2.0で開発する場合は,assign属性でプロパティを設定して,deallocメソッドでreleaseするという従来通りの方法でやるということか.