Herkese merhabalar arkadaşlar, 2021 yılının son yazısı olan View Controller sınıflarımızın ve uygulamalarımızı yakından etkileyen önemli olan bir konuyu Life Cycle(Yaşam Döngüsü) konusunu detaylı bir şekilde ele alıyor olacağız. Hadi başlayalım o zaman. 

Life Cycle (Yaşam Döngüsü) uygulamamızı geliştirirken aslında dikkat edilmesi gereken önemli noktalardan birisidir. Kısaca aslında yaşam Döngüsünü (Life Cycle) algoritma mantığı gibi düşünebiliriz. Algoritma mantığının da kısaca bir işlem yapış sırası vardır. Uygulama yaşam döngüsünde ise burada da uygulamamızın ayağa kalkış sırasında, ekranlar göründükten sonra, ekranımız kapandıktan sonra gibi işlem sıraları vardır temelde uygulamızı bu yapıya göre oluştururuz aslında bu konuda iki konu birbirine benzemektedir. Bu yüzden bu konu temel yapı taşını oluşturmaktadır.

Life Cycle (Yaşam Döngüsü) adından da anlayacağımız üzere View Controller içerisinde yapmamız gereken işlemlerin hangi durumlara göre ve hangi aşamaya göre gerçekleşmesi gerektiğine karar veren metodlardır. View Controller yaşam döngüsü initialize edilmesi ile başlamaktadır. Daha sonra ise View Controller ımıza ait storyboard (ekranlarımızın olduğu UI, tasarımlarımız) üzerinden oluşturulur.

Şimdi uygulama içerisinde kullandığımız Life Cycle (Yaşam Döngüsü) methodlarımıza tek tek inceleyelim.

loadView

Kısaca View’ı kod ile oluşturmuş isek o zaman çağırmamız gereken methoddur. Swift dökümanını incelediğimizde bu yöntemi doğrudan çağırmamamızı öneriyor. View Controller da view özelliği çağırıldığında nil olduğunda bu yöntemi çağırır. Bu method bir görünümü yükler veya oluşturur ve view özelliğine atar. loadView View Controller tarafından yönetilen bir methoddur. View Controller’ın view özelliği daha oluşmamıştır ve sıfırdır. Özel bir görünüm oluşturmak ve view özelliğine ayarlamak istiyorsak bu yöntemi geçersiz kılmamız gerekir.

viewDidLoad()

Bu method yalnızca bir kez çağrılır. View Controller’ın view’ı oluşturup storyboard’a yüklemesi ile çalıştırılır. Yani aslında tüm görünümleri yükledikten sonra çağrılan bir methoddur. Bu nedenle View Controller’ın view leri oluşturduğundan outletlerin oluşturulduğundan eminizdir. Bu kısımda dikkat etmemiz gereken bazı noktalar vardır bunlar;

  • API kullanarak uzun sürebilecek ekranı kitleyecek servis işlemlerinden kaçınmamız gerekir.
  • Bu method View Controller’ın ömrü boyunca sadece bir kez kullanılır.

Bu kısımda önerilenler ise,

  • Bir kez ihtiyaç duyulan ağ araması
  • Kullanıcı arayüzü
  • Bir kez gerçekleştirmemiz gereken işlemler

viewWillAppear(_ animated: Bool)

Bu method view ekranda gösterilmeden hemen önce herhangi bir animasyon yapılandırılmadan önce çağrılır. Bu method View Controller her görüntülendiğinde gösterilir. Bu method içerisinde de servis işlemlerini, maliyeti yüksek işlemleri gerçekleştirilmemelidir. Bu method çağrıldığında view sınırları çizilir fakat oryantasyon ayarlanmaz. viewDidLoad dan farkı View Controller her göründüğünde çağrılıyor olmasıdır.

viewDidAppear(_ animated: Bool)

Bu method ise view kullanıcı tarafından görüldükten hemen sonra çağrılır. Bu aşamada yine viewWillAppear gibi ekran her gösterildiğinde çağrılan methoddur. Bu kısımda gösterilmek istenen animasyonlar, uzun sürecek servis işlemleri, konum işlemleri, UserDefaults gibi işlemlerimizi gerçekleştirebiliriz.

viewWillDisappear(_ animated: Bool)

Bu method view ekrandan kaybolmak üzereyken çağrılan methoddur. Bu kısımda yapacağımız işlemler timer durdurma, servis isteklerini durdurma, klavye gizleme ve veri kaybına neden olmamak için verilerimizi kaydet gibi işlemlerdir.

viewDidDisappear(_ animated: Bool)

viewDidDisappear ise view ekrandan kaybolduğunda çağrılır ve artık view yok olmuştur. Bu method içerisinde değişkenlerimizin değerini sıfırlayabiliriz aynı zamanda bildirimleri sensör işlemlerini dinlemeyi durdurmak için bu methodu kullanabiliriz.

Bugün iOS View Controller Life Cycle anlatmaya çalıştım.Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek dileğiyle!

Tunahan Özataç | Software Developer
Berkut Teknoloji