//
// AppDelegate.swift
// fanshejizhi
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
/**
1.知道 Swift 名稱空間
-在同一個名稱空間下,全域性共享!
-第三方框架使用 Swift 如果直接拖到專案中,從屬同一個名稱空間,很有可能衝突!
-儘量用 cocoapod
2.反射機制,團隊開發中使用,為了解耦
-反射機制,工廠方法
-一個簡單的功能會寫的很複雜
-封裝的很好,彈性很大
*/
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// *** 程式碼中的 ? 都是 “可選解包”,傳送訊息,不參與計算
// 所有的 ? 都是 xcode 自動新增的!
//1.例項化 window
window = UIWindow();
window?.backgroundColor = UIColor.white;
// --- 輸出 info.plist
print(Bundle.main.infoDictionary as Any);
//1.因為字典是可選的,所以先解包,再取值
// 如果字典為 nil , 就不取值
//2.通過key從字典取值,如果錯了就沒有值了
let ns = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "";
//2.設定根控制器,需要新增名稱空間 -> 預設就是專案名稱(最好不要有數字和特殊符號)
let claName = ns + "." + "ViewController";
//anyclass -> 檢視控制器型別
let cls = NSClassFromString(claName) as? UIViewController.Type;
//使用類建立檢視控制器
let vc = cls?.init();
// let vc = ViewController();
window?.rootViewController = vc;
//3.讓window可見
window?.makeKeyAndVisible();
return true
}
}