iOS (static library)静态库的创建与使用

         iOS开发中,一些自定义开发的常用的工具类,不想因为代码的外泄而被别人窥见自己的功能代码。可以考虑将功能类打包成静态库,别人只能调用接口,而不能知道其中实现的细节。

      简介:库是一些没有main函数的程序代码集合。除了静态库,还有动态链接库,他们之间的区别是:静态库可以编译到我们的执行代码中,应用程序可以在没有静态库的环境中运行;动态库不能编译到我们的执行代码中,应用程序必须在有链接库文件的环境下运行。

     本例中,采用项目中 第一次打开某个视图 弹出操作提示 视图。采用装饰者模式。使用类同与实现类的父类继承同一个接口类。每个实现类拥有一个相同类型 的实现类的引用 ,当 视图 销毁时会给 应用发送消息 。应用类收到消息,继续操作。直到发送给使用类发送完成消息。

一。静态库的制作

     1.file -> new -> Project 如图 lib_1

     

点击 next


2.将新建工程中的默认文件删除,将自己要制作静态库的文件加入中工程中


3.这时候.a库文件为红色(因为我这里已经成功创建完成了) 还不能使用。接着 选择真机(Command+B) 编译  

这时 .a库为变成黑色 ,即可以在真机上使用的静态库,因为还需要 在模拟器上运行测试,所以还需要 制作一个 可在模拟器上使用的静态库

4.创建 模拟器上的静态库


(Command+B) 编译  

这时 供模拟器上使用 静态库 创建完毕。此时 因为是两个独立的静态库,所以还需要将两个静态合并成一个

5.合并静态库

  5.1 找到两个静态库的位置:在.a库上右击 选择show in Finder

   

    

Debug-iphoneos 文件夹下的为真机静态库

Debug-iphoneosmulator 文件夹下的为 模拟器静态库。

  5.2 打开命令行工具 输入如下命令

   

此时在目标目录中生成最终使用的静态库


因为 在测试项目中需要使用静态库 所以需要将借口文件暴露出来 ,这里新疆一个文件夹最终为



二、测试使用静态库

  1。新建一个 测试工程。

  2. 将YZPromp 文件夹复制到工程中。

  

3.运行工程 :


测试成功:至此 静态库的创建与使用完毕

测试 使用代码 http://download.csdn.net/detail/kangguang/9524173 


注:

如果用真机产生的静态库 会因为机型 而产生 缺少 针对不能指令集的 错误提示

用 lipo -info lib名称  可以查看  

在 Generic iOS Device 编译产生静态库可以避免此问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS工程中引入了两个不同的静态(LibA和LibB),这两个中存在相同的函数名称时,可能会导致编译错误或运行时冲突。因为在链接(Link)阶段,编译器无法判断该调用哪个中的函数。 解决这个问题的方法有以下几种: 1. 改变函数名称:将其中一个中的函数名称修改为不同的名称,例如在LibA中将函数名修改为A_Function,这样可以避免冲突。 2. 使用命名空间(Namespace):在两个中给函数加上特定的命名空间,例如在LibA中使用namespace A {}命名空间来包裹函数,LibB中使用namespace B {}命名空间来包裹函数,这样就能区分开两个中的函数。 3. 动态加载(Dynamic loading):如果在运行时能够确定使用哪个,可以使用动态加载函数。通过使用dlopen()和dlsym()等动态链接操作函数,可以在运行时决定加载哪个,并调用对应的函数。 4. 修改链接顺序:在工程配置中,将使用静态的链接顺序调整为优先链接需要的函数的,并排除其它的链接。这样可以确保在链接时,只会链接到指定的中的函数。 需要注意的是,以上解决方式都需要在工程配置中进行修改,并且在引用静态时要明确调用的是哪个中的函数,避免出现混淆和冲突。最好的解决方法是在引用静态前,仔细查看的文档和示例,了解使用方式和避免冲突的最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值