/ / Warum wird eine Warnung zur Verwendung von ARC in Objective-C-Bibliotheken angezeigt? - Ziel-c, Speicherverwaltung

Warum gibt es eine Warnung über die Verwendung von ARC in Objective-C-Bibliotheken? - Ziel-C, Speicherverwaltung

Ich bin relativ neu bei Objective-C und lese gerade über Speicherverwaltung nach. Ich möchte ARC für unsere gemeinsam genutzten Bibliotheken verwenden, aber in der Dokumentation zur erweiterten Speicherverwaltung Es gibt eine etwas kryptische Warnung:

Wenn Sie Code für iOS schreiben möchten, müssen Sie verwendenexplizite Speicherverwaltung (Gegenstand dieses Handbuchs). Wenn Sie Bibliotheksroutinen, Plug-Ins oder gemeinsam genutzten Code schreiben möchten (Code, der entweder in einen Garbage Collection- oder einen Nicht-Garbage-Collection-Prozess geladen werden kann), möchten Sie den Code unter Verwendung der beschriebenen Speicherverwaltungstechniken schreiben in diesem Leitfaden.

Ich gehe davon aus, dass der erste Satz nicht mehr aktuell ist, da ARC auf iOS 4 und später unterstützt zu werden scheint. Der zweite Satz scheint jedoch zu implizieren, dass wir bei Shared Libraries MRR statt ARC verwenden sollten.

Mir ist nicht klar, warum es ein Problem wäre, dies zu tun,Ich hätte gedacht, dass es nach dem Kompilieren keinen Unterschied zum aufrufenden Code geben sollte, da die Aufrufe der Referenzzählung vom Compiler eingefügt worden wären. Gibt es wirklich ein Problem bei der Verwendung von ARC für gemeinsam genutzte Bibliotheken?

Antworten:

2 für die Antwort № 1

Dieser zitierte Abschnitt ist umständlich formuliert und wurde wahrscheinlich nicht geändert, als in diesem Leitfaden lediglich zwischen manuellem Zurückhalten und Müllsammlung unterschieden wurde.

iOS wird nicht und wird wahrscheinlich niemals unterstütztMüllsammlung. Wie bereits erwähnt, unterstützt iOS 4 ARC vollständig. Darüber hinaus ist ARC so konzipiert, dass es keine echten Probleme beim Mischen von ARC-Code mit Nicht-ARC-Code gibt (im Gegensatz zu Code, bei dem der Müll gesammelt wurde, der keinen solchen Luxus hat). ARC ist die empfohlene Methode, um den gesamten neuen Code einschließlich des Codes für gemeinsam genutzte Bibliotheken in die Zukunft zu schreiben, sofern Sie nicht vor iOS 4 gezielte Versionen von iOS benötigen.

In gewissem Sinne, ARC ist explizite Speicherverwaltung, bloß nicht Handbuch Speicherverwaltung. Wie ich schon sagte, diese Formulierung ist unangenehm und wurde geschrieben, bevor ARC existierte.