1

アプリケーションデリゲートファイルでActivityIndi​​catorCクラスを使用し、それにオブジェクトを割り当てますが、ここでメモリリークが発生します。

self.ActIndicator=[[ActivityIndicatorC alloc] initwithWindow:window];

私はActIndicatorをdeallocセクションでリリースしますが、上記のコードで同じ潜在的なリークが発生するまで。

誰もがそれを提案できるあらゆる解決策。

4

3 に答える 3

3

オブジェクトは2回保持されます。使用するときは、インターフェイスに配置しself.ActIndicator =たを使用してコンパイラが作成したセッターを呼び出し@property(retain,...)ます。

self.ActIndicator=[[ActivityIndicatorC alloc] initwithWindow:window];
    ^ retainCount + 1                  ^^^^^ and +1 because of this.

あなたは書くことができます

self.ActIndicator = [[[ActivityIndicatorC alloc] initwithWindow:window] autorelease];

また

ActIndicator = [[ActivityIndicatorC alloc] initwithWindow:window];

また、名前をactIndicatorまたは(さらに良い)activityIndi​​catorに変更する必要があります。クラス名のみが大文字で始まる必要があります。

于 2011-03-17T09:03:41.627 に答える
2

ActIndicatorがプロパティを保持するように設定されている場合。次に、.hファイルにリークがあります。@ property(nonatominc、retain)を@property(nonatominc、assign)または

ActivityIndicatorC *theActivity= [[ActivityIndicatorC alloc] initwithWindow:window];
self.ActIndicator=theActivity;
[theActivity release];
于 2011-03-17T09:03:05.853 に答える
1

alloc-initで作成されたオブジェクトを手動で解放する必要があります。したがって、[ActIndicatorリリース]を作成する必要があります。または単に自動リリースします。

于 2011-03-17T09:08:37.657 に答える