1. 程式人生 > >[Swift]@UIApplicationMain

[Swift]@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
<pre name="code" class="objc">    @availability(iOS, introduced=3.0)
    func canOpenURL(url: NSURL) -> Bool 

對比不言自明 ~~

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

import Foundation
import UIKit

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

仔細研究研究,swift 寫專案除語法上的,其他的方面變化也挺大。。。

最後,只想說程式設計師好幸福,程式碼效率又高了。。。

尼瑪從頭學習吧。。。