iPhoneがガーベッジコレクションに対応してくれれば,こんなことしなくていいのだが・・・.@property (nonatomic, retain)の挙動を調べてみた.
@property (nonatomic, retain)は,新しく外部からオブジェクトをセットすると,古いオブジェクトには,releaseが渡される.
ただし,dealloc時に自動的にreleaseは投げられないので,dealloc時には,プロパティにreleaseを自前で投げる必要がある.

- (void) setHoge:(id)newValue {
if( hoge_ != nil )
[hoge_ release];
hoge_ = newValue;
}

セッターの内部はこんな挙動になってるはずだ.
@Psychsさん,色々教えていただき,ありがとうございました.