作為iOS開發人員,我們經常聽到SDK,API。可是它們到底是什么?有什么作用呢?,有的人總是覺得它們太抽象了。
接下來就讓我們一起談談,因為技術知識無窮的,所以我說的可能會有一些不准確的地方,所以也希望廣大的博友提出指正,大家一起進步~~
SDK
SDK,英文全稱Software Development Kit,中文意思就是軟件開發包。這個開發包通常都會包含API函數庫、幫助文檔、使用手冊、輔助工具等資源。意思就是,SDK事實上是開發所需資源的一個集合。而API也被其包含其中,這個我們下面再講。而開發iOS項目我們一般都會用到Xcode,那么SDK與XCode又是什么關系呢?兩者的關系就像操作系統和軟件的關系,操作系統給應用程序提供平台,你用軟件實現你想用的功能。Xcode給SDK提供平台,你用SDK來編程,Xcode只是一個IDE,用於開發的一個工具而已,你也可以不用Xcode來開發。只是它是蘋果官方比較提倡的,而且相對來說最大眾,最好用而已。而SDK才是開發的靈魂,也就是說你所正真要用的東西。
值得一提的是,現在直接說SDK都是代指開發Windows平台下的應用程序所使用的SDK,不過總的來說SDK的定義與作用都是差不多的。由這個我們也不難看出來,其實不管在什么操作平台下,什么編譯語言。我們所用的本質規則都是一樣的,同時我們也可以在從事自己的專業的時候,也借鑒一下別的領域,說不定就有意外的收貨和感悟。
最后說一下,有的人之所以認為SDK難以理解,難以具體化,實例化。其實我覺得這正是SDK的廣義性造成的,SDK 還經常包括示例代碼、支持性的技術注解或者其他的為基本參考資料澄清疑點的支持文檔。正是因為它包含的東西多,廣,深。所以SDK很難簡單的,明了的定義在那里。這點大家也不要太糾結,我們以后接觸的多了也就自然有了它的大致輪廓。
API
剛才說了,API是包含在SDK之中的,所以API的廣義性就相對來說小一點。API這個詞,全稱叫Application Programming Interfaces(應用程序編程接口)。簡單地說,就是一套套的要求,用來管理應用程序之間的溝通。API並不是什么新事物,在你使用PC或筆記本時,正是API讓數據在程序之間傳輸。例如,把一個LibreOffice文檔中的片斷切割出來並傳輸到Excel表格上。系統級的API讓LibreOffice這類程序能夠運行在Windows這樣的操作系統上。
也可以說操作系統留給應用程序的一個調用接口,應用程序通過調用操作系統的 API 而使操作系統去執行應用程序的命令(動作)。API是通過把程序內部的一些功能有限地向外開放來做到的,這使得應用之間可基於各自的利益分享數據,同時不需要開發者公布所有的軟件代碼。對開源項目來說也是如此。你可以把它看成是一扇門、窗或杠桿,不管用什么比喻,一個程序和外面的軟件世界的溝通就是由API定義的。
Mac OS X上的五大API Cocoa,Carbon,POSIX,X11和Java
接下來我們說說比較重要和常用的API,Cocoa。Cocoa 應用程序一般在蘋果公司的開發工具Xcode(前身為Project Builder)和Interface Builder上用Objective-C寫成。不過,通過Java bridge、PasCocoa、PyObjC、CamelBones以及RubyCocoa等橋接技術,Java、Clozure CL、LispWorks、Object Pascal、Python、Perl、Ruby等其它工具或者語言也可以用來開發 Cocoa 應用
說道API,就不得不說說Cocoa Touch,Cocoa Touch由蘋果公司提供的軟件開發API, 用於開發 iPhone\iPod\iPad上的軟件。也是蘋果公司針對iPhone應用程序快速開發提供的一個類庫。此庫以一系列框架庫的形式存在,支持開發人員使用用戶界面元素構建圖像化的事件驅動的應用程序。
這個大家一定都不陌生,我們開發時經常要建的類,這樣一看就直觀多了。
那么問題來了,Cocoa與Cocoa Touch就是一個單詞的差別,有什么區別嗎?
現在大家明白了為什么我們經常用的Cocoa Touch比較多了吧,因為我們開發的大部分都是手機APP,所以用到Cocoa Touch也就自然了。
嘿嘿,以上就是本人對SDK與API一些淺薄的理解和總結,其中也是查了網上好多資料自己學的,如果文章有什么不正確或者模糊的地方,也希望廣大的博友指正出來,大家一起學習!