Arasındaki fark nedir viewDidLoadve viewDidAppear? Bu işlevlere ne tür bir başlatma veya özel kod giriyor?
örneğin, presentModalViewControlleryalnızca içinde bulunduğunda viewDidAppearve açık olmadığında çalışır viewDidLoad.
Arasındaki fark nedir viewDidLoadve viewDidAppear? Bu işlevlere ne tür bir başlatma veya özel kod giriyor?
örneğin, presentModalViewControlleryalnızca içinde bulunduğunda viewDidAppearve açık olmadığında çalışır viewDidLoad.
Yanıtlar:
viewDidLoadgörüntüleme denetleyicisi belleğe ilk yüklendiğinde tam olarak bir kez çağrılır. Bu, herhangi bir örnek değişkenini somutlaştırmak ve bu görünüm denetleyicisinin tüm yaşam döngüsü boyunca canlı olan herhangi bir görünümü oluşturmak istediğiniz yerdir. Ancak, görüş genellikle bu noktada henüz görünmez.
viewDidAppeargörünüm gerçekte görünür olduğunda çağrılır ve bir Görünüm Denetleyicisinin yaşam döngüsü boyunca birden çok kez çağrılabilir (örneğin, bir Modal Görünüm Denetleyicisi kapatıldığında ve görünüm yeniden görünür hale geldiğinde). Bu, herhangi bir düzen eylemini gerçekleştirmek veya UI'de herhangi bir çizim yapmak istediğiniz yerdir - örneğin, bir modal görünüm denetleyicisi sunmak. Ancak, burada yaptığınız her şey tekrarlanabilir olmalıdır. Bir şeyleri burada tutmamak en iyisidir, yoksa görünüm kaybolduğunda serbest bırakmazsanız bellek sızıntıları yaşarsınız.
Bakınız: https://developer.apple.com/documentation/uikit/uiviewcontroller
viewDidLoad, genellikle yalnızca bir kez ve yalnızca bir kez çağrılırken, tekrar çağrılabileceği bir durum vardır. Spesifik olarak, bir alırsanız didReceiveMemoryWarning, görünmeyen görünümleriniz serbest bırakılabilir (görünüm denetleyicilerine dokunulmasa da) ve geri döndüğünüzde viewDidLoadbunlar için tekrar çağrılabilir.
didReceiveMemoryWarning. Ancak, yazarken iyi uygulamalar kullanırsanız, iyi viewDidLoadolmanız gerektiğini kabul ediyorum . Tek noktam, ivarların özensiz kullanımı ve manuel bellek yönetiminin kesinlikle sızıntılara neden olabileceği viewDidLoad. İnsanlar didReceiveMemoryWarningsenaryoya duyarlı olmalı ve buna göre program yapmalıdır .
viewDidLoadüzerine sızacak türden bir kod örneği buldum didReceiveMemoryWarning. İç çekmek.
Basitçe söylemek gerekirse, içinde viewDidLoadolduğu gibi viewDidAppearbu kontrolleri veya dizileri yenilemek istediğiniz yerde herhangi bir kontrol veya dizi oluşturmak istersiniz.
viewDidLoaddenetleyici oluşturulduğunda bir kez viewDidAppearçağrılır ve görünüm her defasında, DID göründüğünde çağrılır. Diyelim ki sunduğunuz modal bir görüşünüz var, bu görüş reddedildiğinde viewDidAppearçağrılacak ve viewDidLoadçağrılmayacak.
viewDidLoadedilebilir bir defadan fazla adlandırılan . Görünümünüz görüntülenmediğinde (diğer görünümler yığını altında) düşük bellek durumunda iOS'un eski sürümleri tarafından kaldırılırsa, görünüm denetleyicisi ekranda yeniden görüntülenmesi gerektiğinde görünümü otomatik olarak yeniden yükleyecektir. İOS'un sonraki sürümlerinde, iOS'un sizin için daha önce yaptığı şeyi yaparak bellek kullanımını azaltmaya yardımcı olmayı seçebilirsiniz: didReceiveMemoryWarningMesaj geldiğinde ekran dışı görünümleri kaldırın, bu durumda viewDidLoadtekrar çağrılacaktır.