Als ARC zu Objective-C kam, tat ich mein Bestes, um mich durch die Automatische Referenzzählung in Objective-C (ARC) Anleitung auf der Website des Clang-Projekts, um zu verstehen, worum es dabei geht. Was ich dort (und nirgendwo sonst) fand, war die Erwähnung der Verwendung von __attribute__
Deklarationen, um ARC mitzuteilen, ob ein bestimmter Code seinen Rückgabewert automatisch freigibt, zum Beispiel ( __attribute__((ns_returns_autoreleased))
), oder ob er einen Parameter 'verbraucht' ( __attribute((ns_consumed))
, und so weiter.
Allerdings scheint der Leitfaden nur sehr wenig über den tatsächlichen Grad der Notwendigkeit dieser Erklärungen zu sagen. Ihr Ausschluss scheint keinen Unterschied zu machen, weder beim Ausführen des statischen Analysators noch beim Ausführen des Projekts selbst. Machen sie überhaupt einen Unterschied? Gibt es irgendeinen Vorteil, eine Methode zu kennzeichnen mit __attribute__((objc_method_family(new)))
? In keinem Artikel, den ich über ARC gefunden habe, werden diese Spezifizierer überhaupt erwähnt; vielleicht kann ein ARC-Guru Auskunft darüber geben, wofür sie verwendet werden.
(Ich persönlich schließe alle relevanten Spezifizierer nur für den Fall ein, finde aber, dass sie den Code verworren und unübersichtlich machen).