最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift能代替Objective-C嗎?

 更新時間:2014年09月25日 15:42:38   投稿:hebedich  
這是我在網(wǎng)上上看到的答案,復(fù)制粘貼過來和大家分享一下,因為我和很多人一樣很關(guān)心Swift的出現(xiàn)對Mac開發(fā)的影響和對Objective-C的影響。

我文章的中心是,以 Apple 目前給出的各種資料來看,這語言不會替代掉ObjC,它不是下一代的ObjC。它有很多缺點,使得它不足以做大型項目。這些缺點使得,Apple 自己都沒有使用它做 Mac/iOS 的 app。我不排除明年后年它有很大改進(jìn),但至少現(xiàn)在還沒有這端倪。

因此,如果你會ObjC,你不需要去看它。

但你如果問我這語言對普通開發(fā)者重要不重要,我說重要,可以明確告訴你這一點--它是 Apple 在 WWDC 向全世界推出的重磅語言我怎麼能說它不重要? 它降低了入門的門檻。使得大量的 JS, Python, Ruby用戶會使用 Apple 的技術(shù)為其開發(fā)程序。它的作用,和 Core Data, Interface Builder 一樣,能讓你快速寫出一個能用的程序來。但如果你想稍做些正經(jīng)事,就心有馀力不足了。所以和 Apple 自己的 Mail 也不會去用 Core Data,自己 iPhoto 不會去用 UICollectionView,稍複雜的 App 都不會去用 Interface Builder 一樣,Apple 自己不會用 Swift。它只是給三五個人的小團(tuán)隊能迅速做出能用的程序,讓大公司能快速做些 Prototype 而已。

====

有人說它相當(dāng)于 C#,或是相當(dāng)于 Scala 對 Java 的改進(jìn),我可以告訴大家,Swift 不是這樣的語言。它更像一種讓人快速做原型的 toy language。

要求 Apple 發(fā)佈下一代 Objective-C 語言的呼聲早就有了,每年寫數(shù)萬字 OS X 評論的 Ars Technica 兩年前就寫了 Apple 應(yīng)該去做一個語言,Objective-C without C 并且使用更現(xiàn)代的功能和更短的 API,以及對自動類型推導(dǎo)的支持,文章見 OS X 10.8 Mountain Lion: the Ars Technica review 。

但 Apple 顯然沒有認(rèn)真對待這門語言。很明顯的,他們根本不想把ObjC給替換掉。并且按Apple的風(fēng)格,如果他們把Swift當(dāng)ObjC的未來來對待,肯定會有一到兩個iOS/Mac應(yīng)用使用Swift改寫。(比如Apple 當(dāng)年要砍 Carbon,首先做的就是把 Finder 重寫了)。

從語言角度,Swift 有太多的缺點:

它的標(biāo)準(zhǔn)庫太差,只有Dictionary, Array 和 String及數(shù)這幾種數(shù)據(jù)結(jié)構(gòu),連個 Set 都沒有。想用別的?你還是要用 ObjC 的。是的,當(dāng)你用原生數(shù)據(jù)結(jié)構(gòu)時,速度比ObjC快。但是那僅限于那幾個。 它沒有任何對異步/同步編程的支持。它沒法綁定使用 Grand Central Dispatch,因此任何正經(jīng)的網(wǎng)絡(luò)應(yīng)用根本無法編寫。

它沒有任何的保護(hù)機(jī)制(private, protected),所有的 method和 variable 都是全局可見的,這顯然不能滿足正經(jīng)工程項目的需要。

只能和 ObjC 互動。如果你想正經(jīng)地使用C或者C++,你得寫 ObjC 的 wrapper。這基本限制了你使用大量的 C/C++ 庫函數(shù)。
沒有辦法 catch Objective-C 的 exception,如果一旦出了 exception,你的 App 立馬就崩了。這也基本限制了你使用很多 ObjC 舊代碼庫。

Chris 在設(shè)計這門語言時,可以明顯地看到他的短視。這也很正常,他是一個做編譯器的,不是做語言研究的。所以這門聲稱支持函數(shù)式編程的語言,根本沒有大多函數(shù)式語言都普遍存在的功能:

僅有的支持在lazy,閉包,及簡單的函數(shù)語言函數(shù)(如map, filter)。這ObjC中都能做
沒有pattern matching
類型推導(dǎo)差不多和 C++11 差不多,沒有使用hindley milner
從上面這些特點看, Apple對其的定位僅是給對ObjC頭疼的開發(fā)者降低學(xué)習(xí)曲線所推出的玩具語言。前面五條中的每一條,基本都是致命的,因此 Apple 自己的項目也不會使用。做個早期 proof of concept的 prototype 到是可以的。

我可以想象,實現(xiàn)上 Swift 是很簡單的(LLVM很成熟了,寫個新語言越來越簡單,比如只要幾步就能做個小語言: 1. Kaleidoscope: Tutorial Introduction and the Lexer),當(dāng)然有可能 Apple 將來會解決這些問題使得其真正實用。但現(xiàn)在來看,Apple 并不希望 Swift 來替代 Objective C。

相關(guān)文章

  • Swift3遷移至Swift4可能遇到的問題小結(jié)

    Swift3遷移至Swift4可能遇到的問題小結(jié)

    每當(dāng)看到新的編程語言我總是會有相當(dāng)大的興趣,所以下面這篇文章主要給大家介紹了關(guān)于Swift3遷移至Swift4可能遇到的問題,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Swift調(diào)用Objective-C代碼

    Swift調(diào)用Objective-C代碼

    目前Swift語言所編寫的應(yīng)用才剛剛可以使用Xcode 6 GM版本提交,而Objective-C作為蘋果的主開發(fā)語言存在了很多年了。目前尚無成熟的Swift庫可用,所以當(dāng)前編寫應(yīng)用可以說基本離不開調(diào)用Objective-C代碼的情況。
    2014-09-09
  • Swift?reduce函數(shù)使用示例詳解

    Swift?reduce函數(shù)使用示例詳解

    這篇文章主要為大家介紹了Swift?reduce函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • swift中defer的實際應(yīng)用小結(jié)

    swift中defer的實際應(yīng)用小結(jié)

    這篇文章主要給大家介紹了關(guān)于swift中defer的實際應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Swift仿微信語音通話最小化時后的效果實例代碼

    Swift仿微信語音通話最小化時后的效果實例代碼

    這篇文章主要介紹了Swift仿微信語音通話最小化時后的效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn)

    這篇文章主要介紹了淺談在Swift中關(guān)于函數(shù)指針的實現(xiàn),是作者根據(jù)C語言的指針特性在Swifft中做出的一個實驗,需要的朋友可以參考下
    2015-07-07
  • Swift利用CoreData實現(xiàn)一個上班簽到的小工具

    Swift利用CoreData實現(xiàn)一個上班簽到的小工具

    這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實現(xiàn)一個上班簽到小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Swift 常量與變量實例詳解

    Swift 常量與變量實例詳解

    這篇文章主要介紹了Swift 常量與變量實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Swift設(shè)置UILabel內(nèi)邊距的實例代碼

    Swift設(shè)置UILabel內(nèi)邊距的實例代碼

    有時候,我們需要一個顯示文字,又想這些文字與邊界之間有自定義的邊距,所以下面這篇文章主要給大家介紹了關(guān)于Swift設(shè)置UILabel內(nèi)邊距的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 舉例講解Swift編程中switch...case語句的用法

    舉例講解Swift編程中switch...case語句的用法

    這篇文章主要介紹了Swift編程中switch...case語句的用法,其中fallthrough關(guān)鍵字在switch語句中的使用是重點,需要的朋友可以參考下
    2016-04-04

最新評論

南皮县| 福海县| 象州县| 仁布县| 株洲市| 微山县| 阿巴嘎旗| 嘉义市| 达尔| 墨竹工卡县| 青海省| 阳曲县| 连平县| 伊春市| 邓州市| 个旧市| 抚顺市| 汝城县| 伽师县| 祁阳县| 西充县| 屯门区| 靖西县| 合阳县| 泰来县| 灌云县| 乌拉特前旗| 衡阳市| 余干县| 栾川县| 宁波市| 稷山县| 六盘水市| 博客| 伊通| 中西区| 青州市| 黄浦区| 澄城县| 丹棱县| 北辰区|