Sobes.tech
Middle

Denetleyici oluşturulduktan hemen sonra görünüm örneği oluşturulur mu?

sobes.tech yapay zeka

AI'dan gelen yanıt

Hayır. UIViewController türündeki bir denetleyici için görünüm örneği (view), tembelce oluşturulur, ilk kez view özelliğine erişildiğinde.

UIKit, kaynakları optimize etmek için denetleyiciyi başlatmanın hemen ardından görünümü oluşturmaz. Görünüm görsel olarak karmaşık olabilir ve oluşturmak için çok bellek ve işlemci zamanı gerektirebilir. Bunu "tembel" yaparak, yalnızca gerçekten ekranda gösterilmesi gerekiyorsa, sistem kaynak tasarrufu sağlar.

Bu süreç, örneğin, denetleyici başka bir denetleyicinin veya pencerenin görünüm hiyerarşisine eklendiğinde veya view özelliği açıkça çağrıldığında gerçekleşir. Denetleyici başlatılmışsa, ancak hiç gösterilmemiş veya kullanılmamışsa, görünümü oluşturulmaz.

Denetleyicinin yaşam döngüsü ve görünüm oluşturma, aşağıdaki ana noktaları içerir:

  1. init(coder:) veya init(nibName:bundle:): Denetleyici başlatılır, ancak view hâlâ nil.
  2. view'a ilk erişim: Eğer view nil ise, sistem loadView() metodunu çağırır.
  3. loadView(): Bu yöntemde siz (veya sistem varsayılan olarak) denetleyicinin kök görünümünü oluşturur ve view özelliğine atar.
  4. viewDidLoad(): Bu yöntem, görünüm yüklendikten ve view özelliğine atandıktan sonra çağrılır. Burada genellikle alt görünümlerin yapılandırılması, veri yükleme ve görünüm varlığına bağlı diğer işlemler yapılır.

loadView()'u geçersiz kılma örneği:

override func loadView() {
    // Storyboard/XIB'den yükleme veya boş bir UIView oluşturmak yerine
    // özel görünümümüzü oluşturuyoruz
    let customView = CustomContentView()
    view = customView
    // Artık view `nil` değil
}

Unutmayın, çoğu durumda loadView()'u doğrudan geçersiz kılmayacaksınız, UIKit'in standart uygulamasına güveneceksiniz; bu, görünümün Storyboard, XIB dosyasından yüklenmesini veya varsayılan olarak boş bir UIView oluşturulmasını içerir. Ancak, görünümün ne zaman ve nasıl oluşturulduğunu anlamak çok önemlidir.