swift-命名空間/反射機(jī)制(Reflect)

Objective-C 一個一直以來令人詬病的地方就是沒有命名空間蹦掐,在應(yīng)用開發(fā)時弄贿,所有的代碼和引用的靜態(tài)庫最終都會被編譯到同一個域和二進(jìn)制中茫打。這樣的后果是一旦我們有重復(fù)的類名的話混萝,就會導(dǎo)致編譯時的沖突和失敗嘹吨。


duplicate

為了避免這種事情的發(fā)生搬味,Objective-C 的類型一般都會加上兩到三個字母的前綴,比如 Apple 保留的 NS 和 UI 前綴蟀拷,各個系統(tǒng)框架的前綴 SK (StoreKit)碰纬,CG (CoreGraphic) 等。Objective-C 社區(qū)的大部分開發(fā)者也遵守了這個約定问芬,一般都會將自己名字縮寫作為前綴悦析,把類庫命名為 AFNetworking 或者 MBProgressHUD 這樣。這種做法可以解決部分問題此衅,至少我們在直接引用不同人的庫時沖突的概率大大降低了强戴,但是前綴并不意味著不會沖突,有時候我們確實還是會遇到即使使用前綴也仍然相同的情況挡鞍。另外一種情況是可能你想使用的兩個不同的庫骑歹,分別在它們里面引用了另一個相同的很流行的第三方庫,而又沒有更改名字墨微。在你分別使用這兩個庫中的一個時是沒有問題的道媚,但是一旦你將這兩個庫同時加到你的項目中的話,這個大家共用的第三方庫就會和自己發(fā)生沖突了翘县。

在 Swift 中最域,由于可以使用命名空間了,即使是名字相同的類型锈麸,只要是來自不同的命名空間的話镀脂,都是可以和平共處的。和 C# 這樣的顯式在文件中指定命名空間的做法不同忘伞,Swift 的命名空間是基于 module 而不是在代碼中顯式地指明薄翅,每個 module 代表了 Swift 中的一個命名空間钞馁。也就是說,同一個 target 里的類型名稱還是不能相同的匿刮。在我們進(jìn)行 app 開發(fā)時僧凰,默認(rèn)添加到 app 的主 target 的內(nèi)容都是處于同一個命名空間中的。

- 在swift 中存在命名空間熟丸,同一命名空間下全局共享.
- 第三方框架使用:直接拖入項目中训措,從屬于一個命名空間,很可能沖突(所以盡量用cocoapod)
- NSClassFromString(反射機(jī)制): 最重要的目的光羞,就是解耦 绩鸣。例子:(反射機(jī)制和工廠方法)

獲取命名空間設(shè)置根控制器


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
       
        window = UIWindow()
        window?.backgroundColor  = UIColor.white
        
        let CFName = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? ""
     //點后面是所需 類名   
//        let vc = Bundle.main.nameSpace() + "." + "ViewController"

        let vc = CFName + "." + "ViewController"
        let  vcType = NSClassFromString(vc) as? UIViewController.Type
        window?.rootViewController = vcType?.init()
        window?.makeKeyAndVisible()
        

        return true
    }

bundle的分類

Extension
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纱兑,隨后出現(xiàn)的幾起案子呀闻,更是在濱河造成了極大的恐慌,老刑警劉巖潜慎,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捡多,死亡現(xiàn)場離奇詭異,居然都是意外死亡铐炫,警方通過查閱死者的電腦和手機(jī)垒手,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門灾茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梆暮,“玉大人,你說我怎么就攤上這事武翎”钣疲” “怎么了榜掌?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乘综。 經(jīng)常有香客問我憎账,道長,這世上最難降的妖魔是什么瘾带? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任鼠哥,我火速辦了婚禮,結(jié)果婚禮上看政,老公的妹妹穿的比我還像新娘朴恳。我一直安慰自己,他們只是感情好允蚣,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布于颖。 她就那樣靜靜地躺著,像睡著了一般嚷兔。 火紅的嫁衣襯著肌膚如雪森渐。 梳的紋絲不亂的頭發(fā)上做入,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音同衣,去河邊找鬼竟块。 笑死,一個胖子當(dāng)著我的面吹牛耐齐,可吹牛的內(nèi)容都是我干的浪秘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼埠况,長吁一口氣:“原來是場噩夢啊……” “哼耸携!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辕翰,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤夺衍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喜命,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沟沙,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年渊抄,在試婚紗的時候發(fā)現(xiàn)自己被綠了尝胆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丧裁。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡护桦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煎娇,到底是詐尸還是另有隱情二庵,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布缓呛,位于F島的核電站催享,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哟绊。R本人自食惡果不足惜因妙,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望票髓。 院中可真熱鬧攀涵,春花似錦、人聲如沸洽沟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裆操。三九已至怒详,卻和暖如春炉媒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昆烁。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工吊骤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人静尼。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓水援,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茅郎。 傳聞我的和親對象是個殘疾皇子蜗元,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容