美文网首页iOS 开发 学习iOS学习征服iOS
Objective-C之Foundation框架及库介绍

Objective-C之Foundation框架及库介绍

作者: 楚简约 | 来源:发表于2017-06-26 11:13 被阅读59次
简介: 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中打开”,就可以点赞咯~


到此为止.记录下来同大家分享!!!🙂🙂🙂

相关文章

网友评论

    本文标题:Objective-C之Foundation框架及库介绍

    本文链接:https://www.haomeiwen.com/subject/qzbdcxtx.html