SORU
20 HAZİRAN 2014, Cuma


Her zaman Swift kapatma içinde kullanımı [sahipsiz öz] edelim

WWDC bölümünde 403 Intermediate Swift transcript, orada, bir sonraki slayt

enter image description here

Konuşmacı eğer kullanmayız eğer bu durumda, " dedi[sahipsiz öz]orada, bir bellek sızıntısı olacaktır. Her zaman kullanmamız gerektiği anlamına mı geliyor[sahipsiz öz]içinde kapanması?

line 64 of ViewController.swift of Swift Weather app kullanmıyorum[sahipsiz öz]. Ama ben bazı kullanarak UI güncelleştirme @İBOutlets, örn. öz.sıcaklık ve öz.loadingİndicator. Belki ben de tanımlanan tüm @İBOutlets çünkü TAMAMzayıf. Fakat güvenliğiniz için, her zaman kullanın[sahipsiz öz]?

CEVAP
20 HAZİRAN 2014, Cuma


Hayır, kesinlikle [unowned self] kullanmak istemediğiniz zamanlar vardır. Bazen kapatılması hala kapatılması denir zaman etrafında olduğunu emin olmak için kendi yakalamak istiyor.

Örnek: zaman uyumsuz ağ istekte

Eğer yapıyorsanız zaman uyumsuz bir ağ isteğiyapınkapatılması isteği sona erdiğinde self korumak istiyor. Bu nesne başka ayırmanın olabilir ama hala bitirme isteği işlemek için mümkün olmak istiyorum.

unowned self weak self kullanma zamanı

Gerçekten [unowned self] [weak self] kullanmak istediğiniz yere sadece strong reference cycle bir oluşturacak. Güçlü bir referans döngüsü olduğunda bir döngü sahipliğini nerede nesneleri sonunda sahibi birbirlerini (belki bir üçüncü taraf) ve bu nedenle onlar asla ayırmanın çünkü ikisi de sağlanması birbirimizi buralarda.

Bir kapatma özel durumda, sadece içinde başvurulan herhangi bir değişken, "" kapatılması. sahibi alır farkında olmak gerekir Kapatılması etrafında olduğu sürece, bu nesnelerin etrafında olmasını garanti etmektedir. Bu sahiplik durdurmak için tek yol [unowned self] [weak self] yapmaktır. Bir sınıf bir kapatma sahibi ve kapatılması bu sınıf için güçlü bir referans yakalar, sonra da kapatılması ve sınıf arasında güçlü bir referans döngüsü var. Bu da eğer sınıf kapatılması sahibi olan bir şeye sahipse içerir.

Videodaki örnekte özellikle

Slaytta örnek TempNotifier sahibi onChange üye değişkeni ile kapatılması. Eğer unowned, self ilan ettiler değilse kapanışı da self güçlü bir referans döngü oluşturarak, kendi olur.

unowned weak arasındaki fark

unowned weak arasında fark weak unowned olmasa da İsteğe bağlı olarak bildirilmiş. weak ilan ederek bir noktada kapanması içinde nil olabileceğini davayı ele almak. Eğer sıfır olduğunu unowned bir değişkene erişmeye çalışırsanız, tüm program kilitlenmesine. Değişken her zaman kapatılması civarında iken etrafında olacaktır emin olduğunuzda sadece unowned kullanın

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012