0

このように宣言されたクラス mainView にプロパティがあります。

@property (nonatomic, retain) FriendsView *friendsView;

何らかの理由で、mainView のときに解放されていません。*私がmainViewself.friendsView = nilの dealloc メソッドで行う場合を除きます。

非常に奇妙な。しかし、待ってください、それは奇妙になります..

インストルメントで実行すると、100% の確率で適切に解放されます。
friendsView の dealloc メソッドでブレークポイントと NSLog を使用して通常どおりダンピングすると、ヒットすることはありません。

何が起こっているのかについてのアイデアはありますか?

編集:私はARCを使用していると言うべきでした。したがって、私の混乱。

4

1 に答える 1

1

そのプロパティをどこかに設定すると、保持カウントが増加します。mainViewが存在する場合は解放しないでください。また、mainViewのdeallocを解放する必要があります。これは予想される動作であり、奇妙なことではありません。オブジェクトの保持またはコピーのプロパティがある場合は、initで実行する必要があります。

friendsView = nil;

そしてdeallocで:

[friendsView release]; //(or self.friendsView = nil which accomplishes the same)

プロパティは、親ビューが解放されたときに解放されるビューに追加したオブジェクトのようには動作しません。それらの保持カウントが>0の場合、親オブジェクトが解放されると、それらは存続します。

于 2012-05-14T17:40:42.667 に答える