若是同一個應用, 須要作一個帶廣告Lite版本, 一個不帶廣告的Pro版本. 那麼問題來了, 該如何優雅的去實現呢?
git
通常來講有兩種實現方法:github
一個把當前工程拷貝而後再修改, 這樣作會致使後期維護成本太高, 每次修改都要同時改兩個工程, 到後期修改簡直提心掉膽, 不過操做傻瓜式.spa
另一個種就是在一個Project裏面建立兩個Target, 而後經過判斷Target來修改代碼, 這樣都是基於同一套代碼作修改, 只是部分不相同的地方經過Target來添加不一樣代碼, 後期修改維護成本低, 推薦你們使用這種方式..net
不想看教程的童鞋, 點擊這裏能夠下載我已經完成好的代碼.設計
建立兩個Target:code
1.首先先選中Target一個已經存在的版本, 右鍵 Duplicateorm
2.而後在彈出來的選擇框選擇 Duplicate Only教程
3.建立完以後你的新Target應該是和個人同樣, 接下來咱們就要修改Target, Scheme, Info-plist, 如圖這樣修改:圖片
4.修改完了以後Target, Scheme, plist的名字以後, 你須要在新的Target添加對應的plist文件, 修改CFBundleDisplayName就能夠修改應用的名字了.ip
5.還要記得修改一下Product Name 否則你的Bundle Identifier的後綴名有copy和你的Target名字不同, 你還須要在Bundle Setting作一下修改.
開始爲兩個不一樣的應用添加不一樣的AppIcon, LaunchImage
在這個選擇使用Images.xcassets裏面設置AppIcon和LaunchImage, 注意這裏一個是AppIcon,另外一個是AppIcon-2, 之後編譯Target的時候他就會跟隨這裏的設置去拿了開機圖和Icon
2.進入Images.xcassets看下圖片是否是都是勾選了兩個Target, 保持和我下圖同樣的勾選, 若是沒有勾選的話, 你在編譯的不一樣Target的時候會獲取不到資源.
3.選擇不一樣Target進行編譯, 你的運行結果應該和個人截圖同樣, 有着不一樣的AppName和AppIcon,還有不一樣的LaunchImage,可是代碼是共用, 到這裏你已經成功了一半了, 接下來你確定是想知道如何在代碼裏面區別不一樣Target, 而後給它們添加其餘的特性.
在代碼裏面利用宏定義來區分不一樣的Traget
1.在Bundle Setting裏面設置一下Proprecessor Macros添加一份KFREE KPRO的參數來區分究竟是那個Traget. 在代碼裏面爲須要用到這個宏去判斷代碼塊.
2.在代碼裏面添加Proprecessor Macros裏面宏定義, 你就會發現編譯以前Xcode就會智能的選擇不一樣代碼. 這樣你就共用一個項目管理兩個不一樣版本的應用了, 大部分的代碼都複用, 維護管理很是輕鬆.
總結:
蘋果每一年都會推出新的技術, 都是爲了減小開發成本和更好的設計, 做爲開發者的開發模式應當和蘋果的理念一致. 用最優雅, 簡潔的方式去實現功能.