İlk Swift projemi yeni oluşturdum, AppDelegate.swiftsınıf bildiriminin üzerinde bir satır var - neden orada ?!
...
import UIKit
import CoreData
@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
...
Yanıtlar:
@UIApplicationMainSwift öznitelik önemsiz değiştirir main.mdosya (görevi uygulamaktır Objective-C projelerinde bulunan maintüm C programları ve çağrı için giriş noktası var fonksiyonunu UIApplicationMainKakao Dokunmatik çalışma döngüsü ve uygulama altyapısı kapalı tekme kadar).
Objective-C'de, UIApplicationMainişlevin sağladığı uygulama başına yapılandırmanın ana (heh) biti, uygulamanızın özel sınıflarından birini paylaşılan UIApplicationnesnenin temsilcisi olarak belirlemektir . Swift, kolayca ekleyerek bu sınıfını atayabilir niteliğini o sınıf bildirisine. (Bir nedeniniz varsa , yine de işlevi doğrudan çağırabilirsiniz . Swift'de bu aramayı bir dosyadaki en üst düzey koda koyarsınız .)@UIApplicationMainUIApplicationMainmain.swift
@UIApplicationMainyalnızca iOS içindir. OS X'te, uygulama temsilcisi geleneksel olarak Info.plist tarafından belirlenen ana uç dosyasında ayarlanır (Swift için ObjC ile aynıdır) - ancak OS X görsel senaryo taslaklarında ana uç dosyası @NSApplicationMainyoktur, orada da aynı şeyi yapar.
UIApplicationMainvar şimdi. developer.apple.com/library/ios/documentation/Swift/Conceptual/…
@UIApplicationMain özniteliği, uygulamanızın başlaması için main.m dosyasının ve giriş noktasının yerine geçer.
Programınızın bu @UIApplicationMain olmadan çalışabileceği bir şey daha yapmanız gereken tek şey comment // @ UIApplicationMain` hedef c'de main.m ile aynı main.swift'i oluşturun ve aşağıdaki kodu yazın. bu, başvurunuzun giriş noktası olacak
import Foundation
class FLApplication: UIApplication
{
override func sendEvent(event: UIEvent!)
{
println("Entry Point") // this is an example
}
}
Foundationİthalat, FLApplication, tüm alt sınıflar kullanarak bildirmek olmadan rastgele subclassing ... Maalesef bu yanıt hiçbiri ilk cümlesinde hariç mantıklı.
AppDelegate.swift kaynak dosyası iki temel işlevi vardır:
Uygulamanıza giriş noktası ve uygulamanıza giriş olaylarını ileten bir çalışma döngüsü oluşturur. Bu çalışma ile yapılır UIApplicationMain özniteliği (@UIApplicationMain) dosyasının en doğru görünen,. UIApplicationMain, uygulamanın yaşam döngüsünü ve bir uygulama temsilcisi nesnesini yönetmekten sorumlu bir uygulama nesnesi oluşturur.
Uygulama temsilcisi nesnesinin planı olan AppDelegate sınıfını tanımlar . Uygulama temsilcisi, uygulamanızın içeriğinin çizildiği pencereyi oluşturur ve uygulama içindeki durum geçişlerine yanıt vermek için bir yer sağlar. AppDelegate sınıfı, özel uygulama düzeyinde kodunuzu yazdığınız yerdir.
Swift dokümantasyonu güncellendiğine göre, işte ilgili pasaj:
NSApplicationMain
Uygulama temsilcisi olduğunu belirtmek için bu özniteliği bir sınıfa uygulayın. Bu özniteliğin kullanılması, NSApplicationMain ( : :) işlevini çağırmaya ve bu sınıfın adını temsilci sınıfının adı olarak iletmeye eşdeğerdir .
Bu özniteliği kullanmazsanız, NSApplicationMain ( : :) işlevini çağıran main () işlevine sahip bir main.swift dosyası sağlayın . Örneğin, uygulamanız ana sınıfı olarak NSApplication'ın özel bir alt sınıfını kullanıyorsa, bu özniteliği kullanmak yerine NSApplicationMain işlevini çağırın.