遷移程序到swift3.0, 僅列舉這四種情況,你是什么感覺(jué)??

前言:

之前深夜看了wwdc16的直播, 很大的感受就是: Apple開(kāi)放了很多的東西, 并且多次提到了China. 期待好久的swift3.0將要來(lái)臨, 筆者安裝了xcode8 beta版想看看swift3.0的模樣, 安裝好了, 打開(kāi)之前的一個(gè)swift2.3的項(xiàng)目, 編譯立馬數(shù)不清的錯(cuò)(雖然之前有心理準(zhǔn)備), 但是當(dāng)看到很多莫名的錯(cuò)誤的時(shí)候, 最初的感覺(jué)是: 心都涼了. 這里列出四個(gè)讓大家初識(shí)一下變化之大...

1, 首先是: 很多方法只是改了方法的命名方式, 是編譯器可以修改的,點(diǎn)擊修改可完成更新到最新的語(yǔ)法. 比如

        let offset = panGesture.translationInView(panGesture.view)
        改為
        let offset = panGesture.translation(in: panGesture.view)
        
        系統(tǒng)的枚舉改為了小寫(xiě)開(kāi)頭
        eg: UIGestureRecognizerState.changed
    

2, 居然會(huì)顯示很多重寫(xiě)的方法報(bào)不存在的錯(cuò)誤(比如: tableView的代理方法...).,著實(shí)詫異. 仔細(xì)看看才發(fā)現(xiàn), Foundation里面的類(lèi)名很多被重新修改了(去掉了NS)

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { }
  
  比如這里的NSIndexPath -> 變?yōu)榱薎ndexPath
  NSBundle.mainBundle()   -> 變?yōu)榱?Bundle.main()
  UIColor.redColor() -> UIColor.red()
    

3, 在測(cè)試了一下和OC文件的交互上, 發(fā)現(xiàn)一點(diǎn)小問(wèn)題(可能是bug)

  • 首先我在swift項(xiàng)目中新建了一個(gè)oc文件, 和之前一樣會(huì)提示是否建立橋接文件,
    選擇建立后, 在橋接文件中引入新建的oc文件的頭文件, 編譯通過(guò).
  • 在oc文件中我寫(xiě)了一個(gè)初始化方法, 然后在swift中使用他來(lái)初始化

OCFile

@implementation OCFile
- (instancetype)initWithName:(NSString *)name {
    if (self = [super init]) {
        self.name = name;
        NSLog(@"hello--------%@", self.name);
    }
    return self;
}
@end

swift文件

        let ocfile = OCFile(name: "test")
        view.backgroundColor = UIColor.red()
// 我的天, 下面這行代碼報(bào)錯(cuò)了, 不過(guò)還好編譯器有提示, 說(shuō)是使用了未解包的對(duì)象
// 當(dāng)然, 我們知道在之前的swift2.X中這里的ocfile是可選值(!), 不過(guò)我們?nèi)匀豢梢灾苯舆@樣調(diào)用
        print(ocfile.name)
// 在目前的3.0版本中 這里的ocfile是可選值(?), 需要我們處理解包, 比如
        print(octile?.name)

編譯, 運(yùn)行通過(guò), 但是編譯器打印了很多信息出來(lái), 這里暫時(shí)不管它是什么了
可是運(yùn)行到oc文件里的NSLog代碼處并沒(méi)有打印信息, 真是欲哭無(wú)淚啊
然后我又在xocode7.3里面使用swift寫(xiě)了相同的代碼, 運(yùn)行正常, 有打印信息出來(lái), 不知道這是bug還是什么, 沒(méi)有找到解決方法

4, 接著我想到在看直播介紹swift的新特性時(shí)候提到了OC中的常量string也有改變, 就立馬試了試通知NSNotification

首先之前發(fā)現(xiàn)Foundation里面的NS被去掉, 但這里習(xí)慣性的敲了NS開(kāi)頭, 沒(méi)成想到, 居然能夠敲出NSNotification(又是一陣心碎...), 接著下一行代碼

        let noti = NSNotification(name: "testName", object: self)
      // 但是這行代碼是報(bào)錯(cuò)的, 還好編譯器有提示(見(jiàn)下圖), 這里也不管為什么是提示的NSString了, 因?yàn)榫退闶菆?bào)錯(cuò)也應(yīng)該是提示String ,于是fix了
        let noti = NSNotification(name: "testName" as NSNotification.Name, object: self)
      // 這樣編譯器就沉默了, 不報(bào)錯(cuò)



Snip20160615_22.png

接著寫(xiě)了NSNotificationCenter來(lái)發(fā)布通知, 結(jié)果, 習(xí)慣性的NS開(kāi)頭但是怎么也沒(méi)有NSNotificationCenter提示出來(lái), 強(qiáng)制敲出來(lái)但是報(bào)錯(cuò), 于是使用NotificationCenter(不得不吐槽為何之前可以,這里不可以)

Snip20160615_23.png

接著代碼如下

        let noti = NSNotification(name: "testName" as NSNotification.Name, object: self)
        let notiCenter = NotificationCenter.default()
        notiCenter.post(noti)

看上去代碼應(yīng)該是沒(méi)有什么問(wèn)題的, 不過(guò)不過(guò), 這里確實(shí)感覺(jué)到現(xiàn)在的編譯速度快了好多, 立馬就報(bào)錯(cuò)了

Snip20160615_24.png

修改之后, 然后注冊(cè)了通知監(jiān)聽(tīng)者, 代碼是這樣的

        let noti = NSNotification(name: "testName" as NSNotification.Name, object: self)
        let notiCenter = NotificationCenter.default()
        // 先注冊(cè)通知監(jiān)聽(tīng)者
        notiCenter.addObserver(self, selector: #selector(self.testNoti(noti:)), name: "testName" as NSNotification.Name, object: self)

        //延時(shí)2s
        sleep(2)
        // 發(fā)布通知
        notiCenter.post(noti as Notification)//之前直接使用Notification就沒(méi)有這樣as來(lái)轉(zhuǎn)換了
        
        
  // selector是這樣的
    func testNoti(noti: Notification) {
        print(noti)
    }

成功運(yùn)行起來(lái), 并且打印正確, 但是我看到寫(xiě)的將string要轉(zhuǎn)換為
NSNotification.Name,我覺(jué)得這不應(yīng)該是通知的正確使用方式,
還需下來(lái)學(xué)習(xí).

我只是在短短的時(shí)間內(nèi), 就發(fā)現(xiàn)了很多的改變, 雖然看上去比較麻煩, 但是我相信在適應(yīng)后, 一定會(huì)是很贊賞這些改變的,這里只是列舉四點(diǎn)分享給大家, 讓大家感覺(jué)一下. 后面一段時(shí)間, 會(huì)一直學(xué)習(xí)swift3.0的了, 會(huì)陸續(xù)分享學(xué)習(xí)心得, 當(dāng)然期間還是會(huì)分享一些其他方面的博客(不過(guò)確實(shí)需要考慮,以后的短時(shí)間內(nèi)博客是用那個(gè)版本的swift來(lái)寫(xiě)了, 或者用OC ? ), Demo代碼很少, 還是分享給大家

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末骗露,一起剝皮案震驚了整個(gè)濱河市吼蚁,隨后出現(xiàn)的幾起案子深啤,更是在濱河造成了極大的恐慌占卧,老刑警劉巖瓣窄,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溢吻,死亡現(xiàn)場(chǎng)離奇詭異乌庶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)左痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)靡羡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俊性,你說(shuō)我怎么就攤上這事略步。” “怎么了定页?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵趟薄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我典徊,道長(zhǎng)杭煎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任卒落,我火速辦了婚禮羡铲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘儡毕。我一直安慰自己也切,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布腰湾。 她就那樣靜靜地躺著雷恃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪费坊。 梳的紋絲不亂的頭發(fā)上倒槐,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音葵萎,去河邊找鬼导犹。 笑死唱凯,一個(gè)胖子當(dāng)著我的面吹牛羡忘,可吹牛的內(nèi)容都是我干的谎痢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼卷雕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼节猿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起漫雕,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滨嘱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后浸间,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體太雨,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年魁蒜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囊扳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兜看,死狀恐怖锥咸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情细移,我是刑警寧澤搏予,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站弧轧,受9級(jí)特大地震影響雪侥,放射性物質(zhì)發(fā)生泄漏圆凰。R本人自食惡果不足惜卸伞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望树酪。 院中可真熱鬧捺典,春花似錦鸟廓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至擎浴,卻和暖如春员咽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贮预。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工贝室, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留契讲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓滑频,卻偏偏與公主長(zhǎng)得像捡偏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峡迷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • 因?yàn)橐Y(jié)局swift3.0中引用snapKit的問(wèn)題,看到一篇介紹Xcode8,swift3變化的文章,覺(jué)得很詳細(xì)...
    uniapp閱讀 4,422評(píng)論 0 12
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)银伟、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,117評(píng)論 4 61
  • 曾經(jīng)被告知:閱讀能暫時(shí)屏蔽掉呱噪浮夸的世俗 因身心合一的專(zhuān)注 而沉醉 安享知識(shí) 文化的熏陶 ... 哎......
    璐狗爾閱讀 145評(píng)論 1 0
  • 今天路過(guò)小區(qū)門(mén)口時(shí)绘搞,聽(tīng)到兩個(gè)大約45歲左右的大姐(雖然可以叫阿姨彤避,但還是禮貌一點(diǎn)好)在談?wù)摯虬绾蛺?ài)美的話題...
    秋之木禾閱讀 222評(píng)論 0 0
  • 天高云淡,我們一路向西夯辖,走過(guò)一村一寨琉预。路有多遠(yuǎn),心有多遠(yuǎn)蒿褂。我們是一群浪跡天涯的游子圆米。 我不期望能遇見(jiàn)多美的風(fēng)景,讓...
    辣江山閱讀 292評(píng)論 2 3