當新建一個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 Foundation import UIKit UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
最後,只想說程序員好幸福,代碼效率又高了。。。