copyで作成した配列を解放する適切な方法は何ですか? NSMutableArrayを引数として取る関数createDocがあります。コピーがメモリを割り当てていると思うので、メモリリークが発生します。iOSアレイコピー、リリース方法
doc = [getDoc createDoc: [[array subarrayWithRange:NSMakeRange(2, 5)] copy] ];
copyで作成した配列を解放する適切な方法は何ですか? NSMutableArrayを引数として取る関数createDocがあります。コピーがメモリを割り当てていると思うので、メモリリークが発生します。iOSアレイコピー、リリース方法
doc = [getDoc createDoc: [[array subarrayWithRange:NSMakeRange(2, 5)] copy] ];
この
doc = [getDoc createDoc: [[[array subarrayWithRange:NSMakeRange(2, 5)] copy] autorelease]];
またはより良いこの
NSArray *subArray = [[array subarrayWithRange:NSMakeRange(2, 5)] copy]];
doc = [getDoc createDoc:subArray];
[subArray release];
あなたはコピーをリリースします。それで全部です。
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];
でも良く、ほとんどの場合には、持っているよりも、配列としてパラメータを宣言するだろうオブジェクトgetDoc
はmutableCopy
を作成します。あなたは、配列のコピーを作成しているのはなぜ
を試してみてください?それは必要ではありません。 –