Swift kod çalıştırmanın giriş noktası nedir?


106

main()Hızlıda hiçbir yöntem yoktur . Program yürütmeye bir yerden başlamalıdır. Peki, hızlı kod çalıştırmanın giriş noktası nedir ve buna nasıl karar verilir?

Yanıtlar:


94

Düz bir Swift modülündeki giriş noktası, adı verilen modüldeki dosyadır main.swift. main.swiften üst düzeyde ifadelere ve ifadelere sahip olmasına izin verilen tek dosyadır (modüldeki diğer tüm Swift dosyaları yalnızca bildirimler içerebilir).

Cocoa Touch , giriş noktasını işaretlemek için bir dosya yerine bir uygulamadaki @UIApplicationMainözniteliği kullanır . Kakao asgari kullanmak için kullanılan basitçe adlı dosyayı , ancak Xcode 6.1 itibariyle kullandığı özelliğini bir uygulanmasına ilişkin .UIApplicationDelegatemain.swiftmain.swiftNSApplicationMain@NSApplicationMainNSApplicationDelegate


4
Yeni bir xcode projesi oluşturdum ve main.swifthiçbir yerde dosya bulamıyorum. Bu dosyanın yeri nedir?
Selvin

Cocoa ve Cocoa Touch uygulamalarında main.swift, Destekleyici Dosyalar grubundadır ve basitçe arama yapmak için yapılandırılır NSApplicationMain.
nathan

4
Hayır, Destekleyici dosyalar grubunda yok. Projenin hiçbir yerinde değil.
Selvin

1
Maalesef Cocoa Touch konusunda yanılmışım ama Cocoa konusunda haklıydım. Güncellenen cevabımı görün
Nathan

Elbette Cocoa Touch'ta bile oluşturabilir ve kullanabilirsiniz main.swift.
Sulthan

39

Gelen AppDelegate.swiftdosyanın Gördüğünüz @UIApplicationMain.
AppDelegate, ilk giriş dosyasıdır.

Temel olarak: main.mve bir AppDelegate.mnevi SwiftsadeceAppDelegate.swift


2
O etiketli @nathan iOS8 için de geçerli, Cocoa-Touchcevabım doğru.

Güzel, main.m'yi hızlı olarak nasıl değiştirebilirim merak ediyordum ve tek bir şey bulamadım.
Jalil

28

Dosyaları ve Başlatma'yı okumak isteyebilirsiniz

Bunun istisnası, bir oyun alanı dosyası gibi davranan ancak uygulamanızın kaynak koduyla oluşturulmuş "main.swift" adlı özel bir dosyadır. "Main.swift" dosyası üst düzey kod içerebilir ve siparişe bağlı kurallar da geçerlidir. Gerçekte, "main.swift" de çalıştırılacak ilk kod satırı, program için ana giriş noktası olarak dolaylı olarak tanımlanır. Bu, minimum Swift programının tek bir satır olmasına izin verir - bu satır "main.swift" de olduğu sürece.

Xcode'da, Mac şablonları varsayılan olarak bir “main.swift” dosyası içerir, ancak iOS uygulamaları için yeni iOS proje şablonları için varsayılan, normal bir Swift dosyasına @UIApplicationMain eklemektir. Bu, derleyicinin iOS uygulamanız için bir ana giriş noktası sentezlemesine neden olur ve "main.swift" dosyası ihtiyacını ortadan kaldırır.

Alternatif olarak, projeleri Objective-C'den Swift'e aşamalı olarak taşırken yaygın olan, Objective-C'de yazılmış ana uygulamanın bir uygulamasına bağlanabilirsiniz.


3
Bunu, iOS'ta giriş noktasının nasıl kurulduğuna dair daha iyi ve daha üst düzey bir açıklama olarak buldum.
Steven

Güzel cevap ve iyi bağlantı. Daha sonra "erken" çalıştırılması gereken kodu yerleştirmek için iyi bir yer buldum. Uygulama temsilcisi yöntemlerinden birini kullanmak yerine, uygulama temsilcisindeki init'i geçersiz kılıp orada yapıyorum. Bunu örneğin varsayılan kayıt seviyesini ayarlamak için kullandım.
charles


1

Swift uygulamalarında özellikler vardır:

  • @UIApplicationMain (Kakao Dokunuşu)
  • @NSApplicationMain (Kakao)

bu, hızlı derleyiciye uygulamanın giriş noktasının nerede olduğunu söyler.

Hızlı derleyicinin maintemelde yaptığı şey , temelde Objective-C uygulamalarındakiyle aynı görünen ve bu yöntemi uygulamanın giriş noktası olarak değerlendiren bir işlev oluşturmasıdır (uygulama işlemi başladığında çağrılan ilk yöntem).

Swift derleyicisinin Mainözniteliklerle neler yaptığı , işletim sisteminin uygulamanın giriş noktasının nerede olduğunu nasıl bildiği hakkında daha fazla bilgi edinmek istiyorsanız, bu makaleyi okumanızı tavsiye ederim: iOS uygulaması giriş noktasını anlama

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.