2015-03-10 20 views
7

Xcode Konsolu'nda nesnelerin korunma sayısını hızlı bir şekilde kaydetmenin bir yolu var mı? Değilse, bir sonraki en iyi alternatif nedir?Swift: Nasıl çıkış yapmak için nesnelerin sayısı korunur?

+5

Neden retainCount ihtiyaç yararlı umut? –

+0

Tıpkı bir öğretim aracı gibi. Öğrencilerin ne kadar güçlü döngüleri olduğunu göstermek ve sadece ARC olayından bahsedeceğim. – sirab333

+0

'retainCount' yöntemini kullanmadan önce bunları okuyun. [10 (http://whentouseretaincount.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-retaincount-considered-harmful), [5 Apple'ın retainCount yöntemi ile ilgili açıklaması ] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/#//apple_ref/occ/intfm/NSObject/retainCount) –

cevap

1

Tipik olarak, korunma sayısını elde etmek için aletleri kullanırsınız. Ancak burada cevaplandığı gibi yöntem retainCount.

How to get the reference count of an NSObject?

+2

'retainCount' Swift'de iyi değil. Ve aksi halde - "Özel Düşünceler" altındaki belgelere bakın: "Bu yöntem, bellek yönetimi sorunlarının hatalarını ayıklamakta bir değere sahip değildir. Çünkü herhangi bir sayıda çerçeve nesnesi, referansları tutmak için bir nesneyi muhafaza etmiş olabilir ..." Nasıl olurdu? Bunu Aletlerde mi yapıyorsun? – sirab333

+0

RetainCount'un size kesin değerleri vermesini beklemeyin. Yorum eklediğim bağlantıları inceleyin (Soru bölümü) –

15

kullanılarak CFGetRetainCount fonksiyon

Örnek: daha burada

print(CFGetRetainCount(object)) 

Oku: https://developer.apple.com/reference/corefoundation/1521288-cfgetretaincount

+0

Ayrıca, Swift, 'CFRetainCount' da zayıf referanslar içerebilecek 'bilinmeyen' türünün referanslarını sayar. Bunu, "CFGetRetainCount" çalışma zamanını Xcode "Bellek Grafiği Hiyerarşisini Görüntüleme" aracıyla çapraz referans yaparak öğrendim. Daha fazla bilgi için: https://koenig-media.raywenderlich.com/uploads/2017/08/visual_memory_debugger.png –

+0

Teşekkürler! Bunun için Vakıf ithal etmek gerekiyor. – Segev