İçeriğe geç

UIApplicationMain kullanımı

Merhabalar bu yazımda İOS uygulama işleyiş mantığına uygun bir başlangıç sınıfı nasıl yazarız bunu göstereceğim.

Bildiğimiz gibi İOS uygulamalarında ilk olarak çalışan sınıf AppDelegate sınıfıdır. Bu sınıfın ardından diğer yazdığımız sınıflar derlenir ve UI nesneleri ile birlikte uygulama karşımıza çıkmış olur.

Bu fotoğrafta uygulama işleyiş yapısını görebilirsiniz. İOS yapısıda popüler olan MVC (Model View Controller) yapısı ile tasarlanmıştır.

Yukardaki resmimizede bakarsak UIApplicationDelegate protokolü tüm işlemleri bir birine bağlayan yapıyı içerir ve AppDelegate sınıfı bu protokolü miras almıştır. Böylelikle tüm uygulama yapısına buradan erişip, ilk derleme anında düzenlemeler veya çalıştırılacak kod parçaları ekleyebiliriz.

UIApplication sınıfıda uygulama içi tüm dokunma ve diğer algılayıp tepki verme işlemlerini kontrol eden sınıftır. Bu sınıfıda miras alarak kendi event handler sınıflarımızı nesneler üzerindeki dokunma olaylarına göre yazabilmekteyiz.

Gelelim main yapısına C,C++ gibi low level dillerde main içerisine kod yazılır ve çalıştırılır. Aslında main’de bir fonksiyon olduğu için sadece main çalıştırılır ve içerisindeki kod derlenir. Bu main görevini farklılaştırılmış olsada AppDelegate sınıfı üstlenir. Kendi main sınıfımızı yazmak için AppDelegate içerisinde bulunan @UIApplicationMain parçasını kaldırarak işe başlayabiliriz.

Daha sonrasında ilk derleme anında çalıştırılması gereken sınıfı İOS derleyicisine sölemek için UIApplicationMain fonksiyonunu kullanmak zorundayız.

UIApplicationMain(
    CommandLine.argc,
    UnsafeMutableRawPointer(CommandLine.unsafeArgv)
        .bindMemory(
            to: UnsafeMutablePointer<Int8>.self,
            capacity: Int(CommandLine.argc)),
    NSStringFromClass(EventHandler.self),
    NSStringFromClass(AppDelegate.self)
)

EventHandler adında oluşturduğum sınıf UIApplication sınıfını miras olarak aldı. Böylelikle eventler yazabilir veya kendi init fonksiyonlarınızıda yazabilirsiniz. Uygulamayı çalıştırdığınız zaman sizin yazdığınız sınıf ilk derlenecektir.

import UIKit

class EventHandler:UIApplication {
    
    override init() {
        print("Run Run")
    }
    
    override func sendEvent(_ event: UIEvent) {
        print("Touch Touch")
      
    }

}

 

 

Tarih:iOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca