[IOS]UIApplicationMain

來源:互聯網
上載者:User

[IOS]UIApplicationMain

當建立一個swift項目後,發現項目結構很簡潔,沒有.pch檔案,也沒有.main檔案,

自然也不會發現main函數的入口,瞬間對app的啟動過程沒頭緒了,點開 AppDelegate.swift

開頭便發現了 @UIApplicationMain 很熟悉的名字,第一想到的就是 在Objc項目中的

 

int main(int argc, char * argv[]){    @autoreleasepool {        return UIApplicationMain(argc, argv, nil, NSStringFromClass([SENAppDelegate class]));    }}

 

於是乎自然就認為 在swift下就認為 一個符號及一個單詞 等於一個main.m檔案乾的活,好高效!!!

尼瑪,真是不想要一點冗餘代碼呀這是,膜拜呀,swift 的高效性由此可見一斑。

首先看下小蘋果官方的詳細解釋

然後又看了下swift 的聲明方式,和Objc變化挺大的,對比UIApplication中的兩個屬性聲明

 

1.0@property(nonatomic,readonly) UIWindow *keyWindow;@property(nonatomic,readonly) NSArray  *windows;2.0 - (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0); 
VS

 

 

1.0    var keyWindow: UIWindow? { get }    var windows: [AnyObject] { get }2.0
    @availability(iOS, introduced=3.0)     func canOpenURL(url: NSURL) -> Bool 

 



對比不言自明 ~~

 

同樣像官方說的一樣,你也可以自己加上main.swift 指定響應的 delegate 名稱,代碼如下:

 

import Foundationimport UIKitUIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))

仔細研究研究,swift 寫項目除文法上的,其他的方面變化也挺大。。。

 

最後,只想說程式員好幸福,代碼效率又高了。。。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.