简介: 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开发中会经常用到。这两个框架在系统中的位置如下图:
其实所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象都是NSObject,NSObject就处在Foundation框架之中,具体的类结构如下:
通常我们会将他们分为几类:
值对象
集合
操作系统服务:文件系统、URL、进程通讯
通知
归档和序列化
表达式和条件判断
Objective-C语言服务
UIKit主要用于界面构架,这里我们不妨也看一下它的类结构:
在简单的介绍一下库:
什么是库?
库是程序代码的集合,是共享程序代码的一种方式
根据源代码的公开情况,库可以分为2种类型
开源库
公开源代码,能看到具体实现
比如SDWebImage、AFNetworking
闭源库
不公开源代码,是经过编译后的二进制文件,看不到具体实现
主要分为:静态库、动态库
静态库和动态库
静态库和动态库的存在形式
静态库:.a 和 .framework
动态库:.dylib 和 .framework (iOS9 取消了.dylib, 使用.tbd替代)
静态库和动态库在使用上的区别
静态库:链接时,静态库中使用的文件会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝(左图所示)
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(右图所示)
.a和.framework的比较
共同点:都看不到源代码
不同点:
> framework默认是生成动态库,我们需要在build setting- Mach-O type为static library
> framework导入的时候,使用#import <>
> .a导入的时候,使用#import ""
> framework在使用的时候,如果要使用到资源包里面的东西,必须把资源包,单独导入到当前项目中
> framework的结构相对来说,好看一些
开发中,怎么用,一般情况下,只有最重要,最机密的代码,才需要把它做成静态库的形式
比如我们公司要提供一些接口,或是服务给别的公司用,我们不需要别的公司看到我们的源代码,这个时候,就可以采用静态库的方式,至于你是采用.a还是采用.framework,你高兴你就怎么来
需要注意的是:
项目中如果使用了自制的动态库,不能被上传到AppStore
我是楚简约,感谢您的阅读,
喜欢就点个赞呗,“❤喜欢”,
鼓励又不花钱,你在看,我就继续写~
非简书用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~
到此为止.记录下来同大家分享!!!🙂🙂🙂