2014-06-06 109 views
8

任何人都知道快速應用程序的啓動順序?正如我所看到的,在快速應用程序中沒有main函數。然後誰負責這樣做Swift應用程序的啓動順序

// Entry point of a normal iOS app 
int main(int argc, char * argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

您的應用程序對象和AppDelegate在這裏創建。但對於快速的應用程序,我想知道誰在創建這些應用程序。

如果有人知道,分享你的想法。

回答

7

迅速書上說:在全球範圍內書面

代碼作爲切入點程序,所以你並不需要一個主要功能。

如果你看一下你的AppDelegate有一個標記@UIApplicationMain這是任何範圍之外,並視爲切入點。

+0

雅..我已經看到了。但不確定'@ UIApplicationMain'。沒有文檔! –

+2

在這裏找到更多的信息http://stackoverflow.com/a/24021180/1873085 – Daniel

10

如果您看到AppDelegate.Swift類,您會發現在文件的全局區域中寫入@UIApplicationMain語句。正如@丹尼爾在他的回答中也提到的那樣。

現在我想評論這條線和編譯代碼,看這是什麼..

enter image description here

在非常簡單的語言,錯誤說編譯器試圖尋找implicit entry/start for main executable,但沒有得到。

它顯示@UIApplicationMainAppDelegate.Swift中的語句爲Swift程序創建了一個隱式入口點。

我試圖明確寫出main.swift類......它的工作原理。

main.swift樣子..

import Foundation 
import UIKit 

UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate)) 
+2

沒有autoreleasepool需要? – CopperCash

+0

@CopperCash UIApplicationMain永遠不會返回,池永遠不會被耗盡。 – Kevin