2012-05-10 4 views
0

copyで作成した配列を解放する適切な方法は何ですか? NSMutableArrayを引数として取る関数createDocがあります。コピーがメモリを割り当てていると思うので、メモリリークが発生します。iOSアレイコピー、リリース方法

doc = [getDoc createDoc: [[array subarrayWithRange:NSMakeRange(2, 5)] copy] ]; 
+0

を試してみてください?それは必要ではありません。 –

答えて

1

この

doc = [getDoc createDoc: [[[array subarrayWithRange:NSMakeRange(2, 5)] copy] autorelease]]; 

またはより良いこの

NSArray *subArray = [[array subarrayWithRange:NSMakeRange(2, 5)] copy]]; 
doc = [getDoc createDoc:subArray]; 
[subArray release]; 
0

あなたはコピーをリリースします。それで全部です。

NSArray * copy = [[array subarrayWithRange:NSMakeRange(2, 5)] copy]; 
doc = [getDoc createDoc:copy]; 
[copy release]; 

しかし - それはパラメータが必要となるものだ場合、あなたが欲しいの可変コピーは、次のとおりです。

NSMutableArray * copy = [[array subarrayWithRange:NSMakeRange(2, 5)] mutableCopy]; 
    ^^^^^^^               ^^^^^^^^^^^ 
doc = [getDoc createDoc:copy]; 
[copy release]; 

でも良く、ほとんどの場合には、持っているよりも、配列としてパラメータを宣言するだろうオブジェクトgetDocmutableCopyを作成します。あなたは、配列のコピーを作成しているのはなぜ

関連する問題