0

私のアプリでは、appdelegate共有インスタンスを作成し、次のような配列にメモリを割り当てています。

appDelegate = (AppDelegate_Shared *)[[UIApplication sharedApplication] delegate];
appDelegate.allServiceAppList_array = [[NSMutableArray alloc]init];
appDelegate.blockXMLData_array = [[NSMutableArray alloc]init];
appDelegate.notesXMLData_array = [[NSMutableArray alloc]init]; 

現在、割り当てたすべてのアレイを解放する方法がわかりません。メモリを割り当てて初期化する場所で潜在的なリークが発生していることを示しています。

これらのオブジェクトを解放する正しい方法は何ですか。

前もって感謝します

4

2 に答える 2

2

AppDelegate プロパティが (保持) として定義されている場合は、そのまま実行します。

appDelegate.something = [[[Something alloc]init]autorelease];

これは、ObjC で最も一般的なパターンです。

保持されたプロパティは新しいオブジェクトを保持し、自動解放は本質的に将来的にオブジェクトを解放するため、最終結果は保持カウントが 1 のオブジェクトになり、dealloc メソッドで解放されます。

于 2012-06-06T13:21:43.477 に答える
0

そんなことしないで

このように使用する

NSMutableArray* arr = [[NSMutableArray alloc]init];
appDelegate.allServiceAppList_array = arr;
[arr release];
arr =nil;

arr = [[NSMutableArray alloc]init];
appDelegate.blockXMLData_array = arr;
[arr release];
arr =nil;

arr = [[NSMutableArray alloc]init];
appDelegate.notesXMLData_array = arr;
[arr release];
arr =nil;
于 2012-06-06T09:06:31.550 に答える