項目升級到 Swift3.0

swift2.2 升級到 swift3.0

第三方庫的升級

為了開發(fā)方便权均,我用到了很多第三方庫垛叨,且慵懶的使用了Cocoapods 1.0.0 進行第三方庫管理坏瘩。下面是我的Podfile.lock 部分內(nèi)容:

  - Alamofire (3.4.0)
  - Dollar (5.0.1)
  - IBAnimatable (2.2)
  - IQKeyboardManagerSwift (4.0.3)
  - KeychainAccess (2.3.5)
  - Kingfisher (2.4.1)
  - MJRefresh (3.1.5)
  - ObjectMapper (1.3.0)
  - Realm (1.0.0):
    - Realm/Headers (= 1.0.0)
  - Realm/Headers (1.0.0)
  - RealmSwift (1.0.0):
    - Realm (= 1.0.0)
  - SVProgressHUD (2.0.3)
  - SwiftyJSON (2.3.2)
  - UIColor_Hex_Swift (2.1)

可想而知升級完 Xcode8 后打開項目會是怎么樣的一幅場景介牙。說實話剛打開的時候整個人都不好了银受,感覺世界就在那一刻完全崩塌圈膏。不過好在這些項目中大部分作者已經(jīng)及時適配了swift3.0(對于OC寫的庫可以不用考慮)
下面簡單說說升級第三方庫塔猾。最簡單粗的做法

pod update --verbose //加上參數(shù)是為了查看更新詳情

操作完這一步,觀察 Podfile.lock 發(fā)現(xiàn) Alamofire 變成了 3.4.1 其他的幾個庫也只是增加了一個版本號稽坤,升級沒有成功
嘗試多次 pod update丈甸,其中幾次還報了錯。查看后發(fā)現(xiàn)需要升級spec

pod repo update

之后再進行 pod update 即可將大部分第三方庫升級到最新版本尿褪。這里要說明一下睦擂,我的 Podfile 文件中 pod 都沒有指定版本,這樣才能在 pod update 的時候直接加載最新的庫杖玲。也許你會問顿仇,當多人開發(fā)的時候,大家在本地 pod install ,很可能會引用不同版本的庫臼闻。這個我倒不擔心鸿吆,因為這不還有 Podfile.lock 在么。只要你別亂 pod update 就行述呐。
事實證明也有例外惩淳,更新后 Alamofire 被默認指定為 3.5(支持swift2.3) ,需要手動指定它的版本為 4.0 (支持swift3) 市埋。另外需要修改 platform :ios, '9.0'黎泣,否則你會看到錯誤
最后就是要在 pods -> TARGETS(第三方庫) -> Build Settings 中找到 User Legacy Swift Language Version 修改為 Yes/No

本地代碼升級

1、CNLabeledValue 發(fā)生了變化缤谎。
參考 How to get localizedstring for CNLabeledValue in swift3

2抒倚、應(yīng)用跳轉(zhuǎn)到設(shè)置界面

// Swift 2.2
let bundleid = "xxxx" // Bundle Identifier
let url = URL(string: "prefs:root=\(bundleid)")
UIApplication.shared.openURL(url!)

// Swift 3.0
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)

3、關(guān)于 GCD 的變化
沒有什么比直接上代碼更具有說服力坷澡。

// switch 3.0 后寫法
func dispatch_async_wrapper(_ async_block: @escaping ()->(), update_ui_block: @escaping ()->()) {
    DispatchQueue.global().async(execute: {
        // 異步耗時操作
        async_block()
        DispatchQueue.main.async(execute: {
            // 更新UI
            update_ui_block()
        })
    })
}


// swift 2.2 
func dispatch_async_wrapper(async_block: ()->(), update_ui_block: ()->()) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),{
        // 異步耗時操作
        async_block()
        dispatch_async(dispatch_get_main_queue(), {
            // 更新UI
            update_ui_block()
        })
    })
}

可以清楚的看到 apple 對 GCD 的類名稱做了修改托呕,使他更符合 swift 的風(fēng)格。這里需要注意的就是 @escaping 關(guān)鍵字频敛。
另外也有網(wǎng)友對GCD的變化做了舉例项郊,感興趣可以看看 Swift 3 里的 GCD

關(guān)于 Xcode 8

Xcode 8 為我們帶來了很多新的特性,讓我們的開發(fā)進一步方便的同時斟赚,也默認開啟了很多功能着降。但有些功能卻讓我們著實感到困惑,比如拗军,在我們調(diào)試程序的時候默認會打印很多系統(tǒng)的 log任洞,這些 log 并不是我們關(guān)心的內(nèi)容。那該如何關(guān)閉她呢发侵?

Product -> Scheme -> Edit Scheme

然后你就看到下面的界面交掏,配置上去就可以了。值得說一下的是刃鳄,上面的那個是取消系統(tǒng) log 的打又殉凇;下面的是打印應(yīng)用啟動過程中叔锐,各種組件的啟動時間挪鹏。


xcode取消系統(tǒng)log.png

to be continue ...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市愉烙,隨后出現(xiàn)的幾起案子狰住,更是在濱河造成了極大的恐慌,老刑警劉巖齿梁,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件催植,死亡現(xiàn)場離奇詭異肮蛹,居然都是意外死亡,警方通過查閱死者的電腦和手機创南,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門伦忠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稿辙,你說我怎么就攤上這事昆码。” “怎么了邻储?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵赋咽,是天一觀的道長。 經(jīng)常有香客問我吨娜,道長脓匿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任宦赠,我火速辦了婚禮陪毡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勾扭。我一直安慰自己毡琉,他們只是感情好,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布妙色。 她就那樣靜靜地躺著桅滋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪身辨。 梳的紋絲不亂的頭發(fā)上丐谋,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機與錄音栅表,去河邊找鬼笋鄙。 笑死师枣,一個胖子當著我的面吹牛怪瓶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播践美,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼洗贰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陨倡?” 一聲冷哼從身側(cè)響起敛滋,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兴革,沒想到半個月后绎晃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜜唾,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年庶艾,在試婚紗的時候發(fā)現(xiàn)自己被綠了袁余。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡咱揍,死狀恐怖颖榜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煤裙,我是刑警寧澤掩完,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站硼砰,受9級特大地震影響且蓬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夺刑,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一缅疟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遍愿,春花似錦存淫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坞笙,卻和暖如春岩饼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薛夜。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工籍茧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梯澜。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓寞冯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晚伙。 傳聞我的和親對象是個殘疾皇子吮龄,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

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

  • 因為要結(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,430評論 0 12
  • 項目組件化、平臺化是技術(shù)公司的共同目標咆疗,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件漓帚,一方面使項目架構(gòu)...
    swu_luo閱讀 21,900評論 0 39
  • CocoaPods 是什么? CocoaPods 是一個負責(zé)管理 iOS 項目中第三方開源庫的工具午磁。CocoaPo...
    朝洋閱讀 25,699評論 3 51
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby尝抖,可以先安裝xcode毡们,再安裝macport ,最后...
    山天大畜閱讀 1,863評論 0 1
  • 談到生命的價值,意義何其之廣奴迅,相信每個人都有自己獨到的認知和見解青责,人生經(jīng)歷不同、感觸不同取具,對于人生價值理解的深度與...
    殳涘i閱讀 288評論 0 0