iOS アプリで興味深いメモリ管理の問題が発生しています。
プロパティを使用
[self.propertyName release];
すると、プロパティが 2 回解放され、iPad 1/iOS 4 デバイスで (プロパティの割り当て解除で) 不正なメモリ アクセス例外が発生するプロパティがあります。this コードを
[_propertyName release];
(プロパティではなくローカル変数にアクセスする) に変更すると、iPad 3/iOS 5 でリークが発生します。
もちろん、OS のバージョンを確認することでこれを防ぐことはできますが、何が間違っているのかを理解したいと思います。
詳細:
UIViewController
プロパティは、プロパティを所有するオブジェクトと同様に、 のサブクラスです。UIView
プロパティをサブビューとして追加しています。これは良い習慣ではないと聞いたことがありますが、メモリの問題なしで別の場所で行っています。
テスト ケースは次のとおりです。
iPad 1、iOS 4.2 - ivar を使用してリリースする必要があります
[_propertyName release]
iPad 2、iOS 5.0 - プロパティを使用してリリースする必要があります
[self.propertyName release]
iPad 3、iOS 5.1 - プロパティを使用してリリースする必要があります
[self.propertyName release]