0

あるビューコントローラーから別のビューコントローラーへのナビゲーションを実行しましたが、ナビゲーションを複数回実行すると、アプリケーションでメモリリークが発生し、NSZombie 検出でアプリケーションを実行すると、「task_for_pid 権限が不十分です (LeakAgent)」と表示されます。ARC対応です(xcode 4.2、iOS5)助けてください........

私のコードはここにあります:

self.locationMapDetail = [[LocationMapDetail alloc] init];  //14.3% Leak
self.locationMapDetail.objItem = [self.parsedItems objectAtIndex:selectedIndex]; //5.7% Leak       
[self.navigationController pushViewController:locationMapDetail animated:YES]; //80.3% Leak
self.locationMapDetail = nil;
self.locationMapDetail.objItem = nil;
4

2 に答える 2

0

私も同じ問題に直面しました。問題を解決するのにほぼ2日かかりました。最後に解決策を得ました。プロファイル スキームが RELEASE ではなく DEBUG モードであることを確認してください。これで問題は解決します。

于 2013-08-29T09:50:35.583 に答える
0

オブジェクトを nil にする前に解放する必要があります。

[self.locationMapDetail release];
self.locationMapDetail = nil;

ARC を使用していない場合は、割り当てるすべてのオブジェクトに対してこれを行う必要があります。

強いポインターの場合、オブジェクトを解放しても効率的に解放されないか、強力なポインターのすべての参照が解放された場合にのみ強力なポインターを解放できるため、仮想的にしか解放されない可能性があります。宣言された変数への強力なポインタ参照を持つ可能性があります。

また、変数の作成に使用している方法についても言及してください..(viewDidLoad または viewWillAppear)。viewDidLoad で作成することをお勧めします。

于 2012-05-12T06:25:33.067 に答える