Örnek sorular
Ios Memory Management ArcZorluk 1
ARC (Automatic Reference Counting) gerçekte neyi sayar?
- aBelirli bir class örneğine o an kaç güçlü referansın işaret ettiğini✓
- bBir fonksiyonun toplamda kaç kez çağrıldığını
- cBir uygulamanın kaç byte disk alanı kullandığını
- dDosyada kaç optional değişken bildirildiğini
Açıklama:ARC, her class örneğine olan güçlü referans sayısını izler; bu sayı sıfıra ulaştığında örnek dealloc edilir.
Ios Memory Management ArcZorluk 1
Bir class örneğinin deinit'i ne zaman çalışır?
- aÖrnek ilk oluşturulduğu anda hemen
- bGüçlü referans sayısı sıfıra düşüp örnek dealloc edilmek üzereyken✓
- cYalnızca kullanıcı uygulamayı zorla kapattığında
- dProperty'lerinden herhangi biri her değiştiğinde
Açıklama:deinit, deinitializer'dır; hiç güçlü referans kalmadığı için örnek dealloc edilmeden hemen önce tam olarak bir kez çağrılır.
Ios Memory Management ArcZorluk 1
İki class örneği, A ve B, her biri diğerine güçlü bir referans tutuyor ve dışarıdan hiçbiri referans edilmiyor. Bu duruma ne denir?
- aBir weak referans zinciri
- bBir retain cycle (güçlü referans döngüsü)✓
- cSarkan bir pointer (dangling pointer)
- dBir copy-on-write ihlali
Açıklama:İki nesne dışarıdan hiçbir referans olmadan birbirini güçlü tuttuğunda, ikisinin de sayısı asla sıfıra ulaşmaz, bu yüzden ARC onları asla dealloc edemez — bu bir retain (güçlü referans) döngüsüdür, bir bellek sızıntısı biçimidir.
Ios Memory Management ArcZorluk 1
Bir property'yi weak var delegate: SomeDelegate? olarak tanımlamak, referans edilen nesnenin ARC referans sayısına ne yapar?
- aNormal bir referans gibi güçlü referans sayısını tam olarak bir artırır
- bReferans sayısını kalıcı olarak hemen sıfıra ayarlar
- cGüvenlik için referans sayısını ikiye katlar
- dGüçlü referans sayısını hiç artırmaz✓
Açıklama:Bir weak referans güçlü referans sayısına katkıda bulunmaz, bu yüzden bir nesneyi yalnızca weak ile tutmak onu canlı tutmaz.
Ios Memory Management ArcZorluk 2
İşaret ettiği nesne dealloc edildiğinde bir weak referansın değerine ne olur?
- aSerbest bırakılan bellek konumunu değişmeden göstermeye devam eder
- bDealloc olduğu anda uygulamayı çökertir
- cBunu önlemek için sessizce güçlü bir referansa dönüştürülür
- dOtomatik olarak
nil olur✓
Açıklama:Weak referanslar, referans edilen nesne dealloc edildiğinde runtime tarafından otomatik olarak nil'e ayarlanır; weak referansların optional olarak bildirilmesi gerekmesinin tam nedeni budur.
Ios Memory Management ArcZorluk 2
Bir weak var property'sinin neden her zaman bir Optional tip olarak bildirilmesi gerekir (ör. weak var x: Foo?, asla weak var x: Foo değil)?
- aÇünkü Optional tipler optional-olmayan class referanslarından daha az bellek kullanır
- bÇünkü referans, referans edilen nesne dealloc edildiğinde herhangi bir anda
nil olabilir✓ - cÇünkü Swift derleyicisi tüm weak anahtar kelimelerinin bir enum tipinden önce gelmesini gerektirir
- dÇünkü optional-olmayan weak referanslar bildirimde her zaman çökerdi
Açıklama:Bir weak referans, ömrü boyunca herhangi bir anda otomatik olarak nil'e ayarlanabildiğinden, tip sistemi nil'in temsil edilebilir, geçerli bir değer olması için onun Optional olmasını gerektirir.