Gibt es eine Möglichkeit, die Retain-Anzahl von Objekten schnell an Xcode's Console abzumelden? Wenn nicht, was ist die nächstbeste Alternative?Swift: Wie man sich ausmeldet Anzahl der Objekte behalten?
Antwort
Normalerweise würden Sie Instrumente verwenden, um die Retain-Anzahl zu erhalten. Aber wie hier beantwortet ist die Methode retainCount
.
'retainCount' ist in Swift nicht gut. Und ansonsten - siehe die Dokumentation unter "Spezielle Überlegungen": "Diese Methode hat keinen Wert beim Debugging von Speicherverwaltungsproblemen. Weil eine beliebige Anzahl von Framework-Objekten ein Objekt behalten hat, um Referenzen darauf zu halten ..." Wie würde tust du es in Instrumenten? – sirab333
Erwarte nicht, dass retainCount die genauen Werte angibt. Siehe die Links, die ich meinem Kommentar angehängt habe (Fragenabschnitt) –
mit CFGetRetainCount
Funktion
Beispiel:
print(CFGetRetainCount(object))
Lesen Sie mehr hier: https://developer.apple.com/reference/corefoundation/1521288-cfgetretaincount
hilfreich hoffen
Beachten Sie auch, dass CFRetainCount in Swift auch Referenzen vom Typ "unbekannt" zählt, die schwache Referenzen enthalten können. Ich lernte dies, indem ich den Laufzeit 'CFGetRetainCount'-Wert mit dem Xcode" View Memory Graph Hierarchy "Tool verweise. Mehr hier: https://koenig-media.raywenderlich.com/uploads/2017/08/visual_memory_debugger.png –
Danke! Müssen Sie Foundation dafür importieren. – Segev
Warum Sie retainCount brauchen? –
Nur als Lehrmittel. Ich möchte den Schülern zeigen, wie stark sich die Zyklen halten, und einfach über die gesamte ARC-Sache sprechen. – sirab333
Lesen Sie diese, bevor Sie die RetainCount-Methode verwenden. [10 (http://winntousretaincount.com), [2] (http://stackoverflow.com/questions/4636146/when-to-use-retaincount), [3] (http: //www.friday. com/bbum/2011/12/18/retaincount-is-useless /), [4] (http://stackoverflow.com/questions/5784084/calling-rentaincount-consolided-harmful), [5 Apples Erklärung zur Methode retainCount ] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/#//apple_ref/occ/intfm/NSObject/retainCount) –