Xcode'da tutma döngülerini takip etmek zor olabilir. Bu, bu harika özelliği kullanmanıza yardımcı olacak makaledir (örnekle birlikte)!
Zorluk: Başlangıç | Kolay | Normal | Zorlu
Bu makale Xcode 11.5 ve Swift 5.2.4 kullanılarak geliştirilmiştir.
Tutma döngüleri bellek sızıntılarına neden olabilir. Bir kök nesne birbirine güçlü referanslarla tutunan bir grup nesne oluşturursa ve bu grup daha sonra serbest bırakılırsa, bellekle serbest bırakılamaz.
Bunun nedeni, referans sayımının kullanılması ve bir referans her silindiğinde sayının bir azalması ve bir nesnenin yalnızca o nesnenin referans sayısı sıfır olduğunda serbest bırakılabilmesidir.
Referans döngüsü, referans sayısının hiçbir zaman sıfıra ulaşamayacağı ve nesnelerin serbest bırakılamayacağı anlamına gelir ve bu da bellek sızıntısına neden olur; bu, kullanılan belleğin hiçbir zaman sistemde kullanılmak üzere geri bırakılmayacağı anlamına gelir.
ParentA ve class olmak üzere iki sınıfımız var Child. Artık ebeveynin tek bir çocuğa sahip olması isteğe bağlıdır (bu örnekte) ve bir çocuğun her zaman tek bir ebeveyni vardır.
Swift'de özelliklerin güçlü referansları vardır ( zayıf veya unowner'ın aksine ), bu nedenle buradaki tüm referanslar güçlüdür.
UIViewControllerTutma döngüsü ebeveyn ile alt öğe arasındadır; onları oluşturan bir örnek artık mevcut olmasa bile ikisi de serbest bırakılamaz . Bahsi geçmişken, işte UIViewControlleryaratıcı bir şekilde şu şekilde adlandırılan örnek ViewController:
Böylece , güçlü referanslarla (ve tam tersi) tutunduğu için artık mevcut olmasa bile tutulacak olan UIViewControllerbir Parentve oluşturur.ChildViewControllerChildParent
Bunların hepsi depodan indirilebilir, böylece pratikte görebilirsiniz.
Projeyi çalıştırdığımızda kötü bir şey olmuyor. Harika!
Ancak yaptığınız iş görüşmesi, sizi tutma döngünüz için reddedecektir.
Bellek döngüsünü gerçekten görmek için Xcode'un bellek hata ayıklayıcısını kullanalım.
Projeyi çalıştırdıktan sonra Xcode penceresinin sağ alt kısmında aşağıdaki araç çubuğunu görüyoruz:
Bunu adım adım gerçekleştirelim: aşağıdaki görüntüde bellek hata ayıklayıcı simgesi kırmızı bir dikdörtgenle vurgulanmıştır:
yani aşağıdaki resme tıklayın:
Xcode'un bellek grafiğini oluşturması bir saniye sürecektir ve sorunu görmelisiniz. Bir mor göreceksiniz! ekranın sol tarafında.
İki mor ünlem işaretine tıklamak bize koruma döngüsünü gösteren birkaç resim verir. Ayrıca sınıfların Childve Parentproblemin olduğu bilgisini de görebiliriz . Bu durumda bunu biliyoruz ama gelecekte bu özelliği kullanmalı ve bunun için Xcode'a teşekkür etmeliyiz!
Bu döngüde her şey güçlü! Parent-> ilişkisini zayıflatarak bunu düzeltebiliriz Child.
Bellek grafiğine geri döndüğümüzde artık bir tutma döngüsünün olmadığını görebiliriz
Neşe!
Xcode'un enstrümanlarda harika araçları var ve bazıları bunları kullanmayı tercih ediyor. Ancak görsel bellek hata ayıklayıcısı, kodunuzda olabilecek bu sinir bozucu sorunları görmemize olanak tanıyan harika bir araçtır.
Bu, elimizde olması gereken başka bir harika araç!
Herhangi bir sorunuz, yorumunuz veya öneriniz varsa lütfen bana Twitter'dan ulaşın
Bu hafta, günlük e-posta listesinin bir üyesinden bir e-posta aldım. Bilmek istediler: Günlük, haftalık ve aylık olarak hangi kaynakları ziyaret ediyorsunuz? Harika soru! İş akışım ve kullandığım en önemli kaynaklar hakkında bazı bilgileri paylaşmaya çalışmaktan mutluluk duyuyorum.
2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları. Tüm geliştiriciler terminal kullanır; bazıları için tüm iş akışı terminaldir Bu gönderi, 2023'te standardı belirleyen terminal, kabuk ve komut satırı araçları olan Hypermodern Terminal Toolbox'ı tanıtıyor Terminal Emülatörü Olarak Kitty Kitty bir terminal emülatörüdür - GNOME Terminaline bir alternatiftir , Alacritty veya Windows Terminali.
[Tetik uyarısı: Bu makale, Jordan Neely'nin katilini öven insanların ekran görüntülerini içerir.] Kolluk kuvvetleri nihayet - ve belki de isteksizce - Jordan Neely'yi ölene kadar boğan Daniel Penny'yi bu cinayetle suçladı.
Eski olan şimdi tekrar yeni ve eskiden ışıltılı parlak olan şey şimdi sıkıcı geliyor. 1990'ların sonundaki diğer modalarla birlikte şehir merkezindeki havalı çocuklar arasında geri dönüş yapan JNCO kot pantolonlarından bahsetmiyorum.
Çoğu zaman kendimizi, bizim için iyi olduğunu bildiğimiz şeyleri uygulamakta zorlanırken buluruz. Bir başkasına onu sevdiğimizi söylemekten bir korsan gibi konuşmayı hatırlamaya kadar, her zaman bu şeyleri zaten yaptıkları için bir günlük, haftalık veya aylık olaylara gerek olmadığını iddia edenler olacaktır.
Günümüzün hızla gelişen iş ortamında, hibrit ve uzaktan çalışma kavramı benzeri görülmemiş bir ivme kazandı. Şirketler, çalışanlarının değişen ihtiyaç ve beklentilerine uyum sağlamaya devam ederken, çeşitli alanlardan uzmanlar bu dönüştürücü çalışma biçiminin faydalarını, zorluklarını ve geleceğini tartışmak için bir araya geldi.