5

以前のCocoaメモリ管理ルールで述べたように

名前が「alloc」または「new」で始まるメソッドまたは「copy」を含むメソッド(alloc、newObject、mutableCopyなど)を使用してオブジェクトを作成する場合、またはオブジェクトに保持メッセージを送信する場合は、オブジェクトの所有権を取得します。

2010年12月以降は読んでいませんが、それ以降は

名前が「alloc」、「new」、「copy」、または「mutableCopy」で始まるメソッド(たとえば、alloc、newObject、mutableCopy)を使用して、オブジェクトを「作成」します。

ここで、プレフィックスとして「コピー」が必要であることに注意してください。これにより、Clang Static Analyzerからいくつかのメモリ関連の警告が発生しました:(。インターウェブを検索した後、これがiOSのメモリ管理の基本基盤の1つであるため、なぜこれが変更されたのかについて結論を出すことができませんでした。

誰かが理由を知っていますか?ありがとう!

4

1 に答える 1

6

テキストに「コピー」が含まれているメソッドがいくつかありましたが、明らかにコピーメソッドではありませんでした。たとえば、+[NSData dataWithBytesNoCopy:length:]copyもちろん、静的アナライザーのアノテーションを使用して非標準の動作を通知することは可能でしたが、一般に、またはで始まらないコピーメソッドを作成した人はほとんどいないと思われるmutableCopyため、物事を単純化するだけです。

率直に言って、メソッドに「コピー」という単語が含まれているが、所有する参照を返すことを意図していないという反対の問題に遭遇したので、彼らがそうしてくれてうれしいです。

于 2011-04-04T03:07:52.707 に答える