ARCがObjective-Cに来たとき、私はClangプロジェクトのWebサイトに投稿されたObjective-C自動参照カウント(ARC)ガイドを読んで、それが何であるかをよりよく理解するために最善を尽くしました。私がそこで見つけたのは(そして他のどこにもありません)、__attribute__
特定のコードがその戻り値を自動解放するかどうか、たとえば(__attribute__((ns_returns_autoreleased))
)、またはパラメーターを「消費する」かどうか(など)をARCに示すために宣言を使用することについての言及でし__attribute((ns_consumed))
た。
しかし、ガイドはこれらの宣言が保持する実際の必要性のレベルについてほとんど何も述べていないようです。それらを除外しても、静的アナライザーを実行する場合でも、プロジェクト自体を実行する場合でも、違いはないようです。これらも違いを生むのでしょうか?メソッドにラベルを付けることに利点はあります__attribute__((objc_method_family(new)))
か?私がARCで見つけた記事では、これらの指定子についてはまったく言及されていません。おそらく、ARCの第一人者は、これらが何に使用されているかについて語ることができます。
(個人的には、念のために関連するすべての指定子を含めますが、コードが難読化されて乱雑になることがわかります。)