在动手操作打framework
之前,我们先来了解一下一些基本的概念。
1:什么是类库?
库
是源代码
经过编译形成的二进制代码,别人项目中在使用我们的库的时候,库在参与编译的时候直接link
就可以啦,按照link
的方式可以把库分为静态库
和动态库
。
2:什么是静态库?
静态库
在编译的时候会被直接拷贝一份,复制到目标程序中,这段代码在目标程序中就不会再改变了。一般以.a
和.framework
为文件后缀名。这种做法是牺牲应用体量来节省编译时间。
3:什么是动态库?
与静态库
相反,动态库
在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库
的引用。等到程序运行时,动态库
才会被真正加载进来。
动态库
的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库
也被称作共享库)。
同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库
带来的问题主要是,动态载
入会带来一部分性能损失,使用动态库
也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行
以.tbd(之前叫.dylib)
和.framework
为文件后缀名
苹果系统为我们提供了很多动态链接库,我们可以在我们项目工程中查看一下
4.什么是 Framework
Framework
是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。
Framework
只是一种打包方式,其本身和静态、动态无关!
framework制造步骤
第一步:创建工程
![](https://img.haomeiwen.com/i15033832/c05111935bce8819.png)
![](https://img.haomeiwen.com/i15033832/262a579bef27ed0a.png)
![](https://img.haomeiwen.com/i15033832/6bf35ec6b7f48693.png)
![](https://img.haomeiwen.com/i15033832/412042d5e4ec770f.png)
![](https://img.haomeiwen.com/i15033832/022677287d67c0dc.png)
![](https://img.haomeiwen.com/i15033832/2a1f887222067fb2.png)
第二步:添加自己的测试文件,添加到header
里面
第一种:private(共有类型,可以对外暴漏)
第二种:public (共有类型,可以对外暴漏)
第三种:project (私有类型,不可以对外暴漏)
![](https://img.haomeiwen.com/i15033832/668e15c5d23b5ecf.png)
第三步:在项目自动生成的头文件中将自己要暴漏出去的文件
写入该header
文件中
![](https://img.haomeiwen.com/i15033832/3517ab3274ad121d.png)
第四步:选择你要做的是静态库
还是`动态库
![](https://img.haomeiwen.com/i15033832/b7aba79bfec80aba.png)
第四步:配置product
文件,之前xocde
会自动生成,现在不会了
Xcode 13 新建工程找不到product
文件夹
解决办法:cd
到工程目录下
1. open xxx.xcodeproj/project.pbxproj
2. 搜索 "productRefGroup"。如下类似 (注意细看mainGroup和productRefGroup的值是不一样的)
mainGroup = 1A5B6EB72786888E0069399B;
productRefGroup = 1A5B6EC22786888E0069399B /* Products */; 《---就是这个
3. 将上面 `mainGroup` 对应的值复制给 `productRefGroup`即可
4. command + S 保存
重启下就有了
网友评论