送信者によって暗黙的に保持されているオブジェクトを返すAppleのNSCopyingドキュメントの状態。copyWithZone:
したがって、そのオブジェクトがに追加されると、保持カウントのバランスを保つためにオブジェクトにメッセージをNSMutableArray
送信する必要があるようです(配列はオブジェクトを保持するため)。autorelease
したがって、ある配列の内容を別の配列にディープコピーするには、次のようなものが必要です。
NSMutableArray *destination = [NSMutableArray array];
// assume MyObject adopts NSCopying
for (MyObject *obj in myArray)
[destination addObject:[[obj copy] autorelease]];
しかし、私はこの回答で別のアプローチに気づきました。[ret addObject:[val copy]]
メモリリークのようです。ただし、私はまったく新しいNSCopying
ので、質問したいと思いました。コピーしたオブジェクトを配列に追加する場合、保持カウントのバランスを保つために、オブジェクトに自動解放メッセージを送信する必要がありますか?
編集-詳細:Clangは、自動解放を削除した後、潜在的なメモリリークを報告します。おそらく、リンクされた回答は、送信者によって暗黙的に保持されていないcopy
オブジェクトを返すことを前提としています。