iOS库的使用

1, framework-动态库

YY的库 是 framework 库。
mach-o类型是 Dynamic Library
也就是动态库。

iOS的沙盒机制, 不可能像系统一样使用动态共享库, 其它APP不可能共同访问同一个自己实现的库。

正确的使用方法是:

1、 将framework库文件夹 拷贝到项目目录下
2、 拖拽到 General-》Embedded Binaries 下面;
改动做,自动完成几件事情:
1,Linked Frameworks and Libraries 下面也自动被引入了
2,Build Settings-> Search Paths-》Framework Search Paths 也自动引入了
$(PROJECT_DIR)/projectname 这个地址配置

项目中可以用尖括号导入头文件;
3, 我们完全可以像使用.a静态库一样, Build Settings-> Search Paths -》 User Header Search Paths , 配置为 xxx.framwork/Headers这个地址,则项目中就可以使用双引号导入头文件。

3、 编译运行后, APP安装包YYDynamicLibraryFrameworkUse.app中,YYKit.framework库已经被拷贝进去了, 在YYDynamicLibraryFrameworkUse.app-》Frameworks目录下面。

这实质上是 沙盒内的动态共享库。

以上操作要点是: Embed Frameworks 配置项, 将库拷贝到资源包目录下中, 便于app在运行中,找到动态链接库。
如果不拷贝,那么仍然能通过编译。 但是, 在启动APP过程中,就会报错:
dyld: Library not loaded: @rpath/YYKit.framework/YYKit
Reason: image not found

用file命 令 可以查看framework包中到底是动态库还是静态库

framework包--静态库:

Mach-O universal binary with 4 architectures:
[i386:current ar archive random library]
[arm64:current ar archive random library]

framework包---动态库
Mach-O 64-bit dynamically linked shared library x86_64

.a----静态库

Mach-O universal binary with 2 architectures:
[i386:current ar archive random library]
[x86_64:current ar archive random library]

2、 framework-静态库

1、 将framework库文件夹 拷贝到项目目录下
2、 拖拽到 General-》Linked Frameworks and Libraries 下面;
改动做,自动完成几件事情:

1,Build Settings-> Search Paths-》Framework Search Paths 也自动引入了

$(PROJECT_DIR)/projectname 这个地址配置

3、 Build Settings-> Search Paths -》 User Header Search Paths 需要手动拖拽,将framework包路径拖拽进来
"$(SRCROOT)/useframework/ffnetworkingFramework.framework"

否则编译报错;

Lexical or Preprocessor Issue Group

Include of non-modular header inside framework module 'ffnetworkingFramework.RACSignal_retryinterval'

Include of non-modular header inside framework module 'ffnetworkingFramework.FFNetwoking':

Could not build module 'ffnetworkingFramework'

同样,   Build Settings-> Search Paths -》 User Header Search Paths , 配置为 xxx.framwork/Headers这个地址,则项目中就可以使用双引号导入头文件。

4、 编译运行后, APP安装包 .app中, 不存在Frameworks目录, 因为并没有embed 把库嵌入到资源包中。 因为是静态库, 库已经打包到可执行程序中了。

3、 .a-静态库

1、 将.a库 拷贝到项目目录下
2、 拖拽到 General-》Linked Frameworks and Libraries 下面;
改动做,自动完成几件事情:

1,Build Settings-> Search Paths-》Library Search Paths 也自动引入了

$(PROJECT_DIR)/projectname 这个地址配置

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 12,358评论 3 42
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,552评论 0 4
  • 前言 1.静态库和动态库有什么异同? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。利用静态...
    Ly梦k阅读 8,754评论 3 18
  • 介绍 动态库形式:.dylib和.framework 静态库形式:.a和.framework 动态库和静态库的区别...
    齐滇大圣阅读 46,842评论 18 251
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,299评论 3 119

友情链接更多精彩内容