0

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

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

2 に答える 2

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];
于 2012-05-10T19:53:58.270 に答える
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];

ほとんどの場合、オブジェクトgetDocにそのmutableCopy.

于 2012-05-10T19:52:13.857 に答える