//
// 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 ??