簡介: Foundation和UIKit是Cocoa框架最重要的兩個子框架
而Cocoa是創建Mac OS X和iOS程序的原生面向對象的API,為這兩種應用程序提供了編程環境。
為什么前面說的內容中新建一個類的時候我們都是選擇Cocoa Touch Class呢?Cocoa是什么呢?
Cocoa不是一種編程語言(它可以運行多種編程語言),它也不是一個開發工具(通過命令行我們仍然可以開發Cocoa程序),它是創建Mac OS X和IOS程序的原生面向對象API,為這兩者應用提供了編程環境。
我們通常稱為“Cocoa框架”,事實上Cocoa框架本身是一個框架的集合,它包含了眾多子框架,其中最重要的要數“Foundation”和“UIKit”。前者是框架的基礎,和界面無關,其中包含了大量常用的API;后者是基礎的UI類庫,以后我們在IOS開發中會經常用到。這兩個框架在系統中的位置如下圖:
Cocoa框架.png
其實所有的Mac OS X和IOS程序都是由大量的對象構成,而這些對象的根對象都是NSObject,NSObject就處在Foundation框架之中,具體的類結構如下:
NSObject - 1.jpg
NSObject - 2.jpg
NSObject - 3.jpg
通常我們會將他們分為幾類:
值對象
集合
操作系統服務:文件系統、URL、進程通訊
通知
歸檔和序列化
表達式和條件判斷
Objective-C語言服務
UIKit主要用于界面構架,這里我們不妨也看一下它的類結構:
UIKit.jpg
在簡單的介紹一下庫:
什么是庫?
庫是程序代碼的集合,是共享程序代碼的一種方式
根據源代碼的公開情況,庫可以分為2種類型
開源庫
公開源代碼,能看到具體實現
比如SDWebImage、AFNetworking
閉源庫
不公開源代碼,是經過編譯后的二進制文件,看不到具體實現
主要分為:靜態庫、動態庫
靜態庫和動態庫
靜態庫和動態庫的存在形式
靜態庫:.a 和 .framework
動態庫:.dylib 和 .framework (iOS9 取消了.dylib, 使用.tbd替代)
靜態庫和動態庫在使用上的區別
靜態庫:鏈接時,靜態庫中使用的文件會被完整地復制到可執行文件中,被多次使用就有多份冗余拷貝(左圖所示)
動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加載一次,多個程序共用,節省內存(右圖所示)
靜態庫和動態庫.png
.a和.framework的比較
共同點:都看不到源代碼
不同點:
> framework默認是生成動態庫,我們需要在build setting- Mach-O type為static library
> framework導入的時候,使用#import <>
> .a導入的時候,使用#import ""
> framework在使用的時候,如果要使用到資源包里面的東西,必須把資源包,單獨導入到當前項目中
> framework的結構相對來說,好看一些
開發中,怎么用,一般情況下,只有最重要,最機密的代碼,才需要把它做成靜態庫的形式
比如我們公司要提供一些接口,或是服務給別的公司用,我們不需要別的公司看到我們的源代碼,這個時候,就可以采用靜態庫的方式,至于你是采用.a還是采用.framework,你高興你就怎么來
需要注意的是:
項目中如果使用了自制的動態庫,不能被上傳到AppStore
我是楚簡約,感謝您的閱讀,
喜歡就點個贊唄,“?喜歡”,
鼓勵又不花錢,你在看,我就繼續寫~
非簡書用戶,可以點右上角的三個“...”,然后"在Safari中打開”,就可以點贊咯~
到此為止.記錄下來同大家分享!!!??????