(一〇一)集成静态库RHAddressBook实现OC访问通讯录

使用官方的AddressBook框架仅能使用C语言访问通讯录,十分不便,这里介绍集成第三方框架RHAddressBook的方法,该框架可以通过OC访问和操作通讯录。

该框架是一个静态库,集成比较复杂。

首先下载该框架:RHAddressBook,下面有关于集成的一些介绍,下面简单的介绍一下集成的过程。

①首先把静态库工程直接拖入自己的工程:

②选中自己的工程,工程配置中选择Build Phases,按照下图导入两个文件,点击左侧的加号添加即可。

③选择Build Settings,搜索Header Search Path(注意不是Paths),加入一个路径include,注意右边选择递归。

④搜索other linker flags,添加-ObjC和-all_load编译标记。

-ObjC 告诉链接器把定义的OC类和分类都加载进来,如果静态库中有类和分类,必须加入这个flag。

-all_load 用于处理-ObjC中的bug,如果类库中只有分类没有类,默认不会加载分类,加了这个会强制加载分类。

⑤导入主头文件#import <RHAddressBook/AddressBook.h>,注意缺少了这一步工程会报错。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 21:07:07

(一〇一)集成静态库RHAddressBook实现OC访问通讯录的相关文章

(一〇二)静态库(.a)的打包

库是代码的集合,根据代码公开程度,分为开源库和闭源库. 其中闭源库主要包括静态库和动态库,是经过编译的二进制文件,看不到具体实现. 静态库的拓展名是.a或者.framework,动态库则是.dylib和.framework. 静态库在链接时会将库完整的复制到可执行文件中,被多次使用就有冗余拷贝. 动态库在链接时不复制,程序运行时系统会动态的加载,多个程序共享一个动态库,节省内存. 注意:项目中如果包含自制的动态库,上传到App Store会被拒绝,如果要上传App,应选择静态库. 静态库用于抽取

(一〇三)静态库(.a)的调试

上节介绍的方法,只能创建静态库而不能调试,因为直接创建静态库工程并非可执行文件. 本文介绍的方法创建的静态库断点能够在调试时起作用. 为了能够调试静态库,应该在一个可执行工程(例如Single View Application),然后再其内部再加入一个静态库,加入的方法如下图所示: 点击工程配置,中下部有一个+,点击后选择静态库然后创建. 创建后会发现工程中多了两个文件夹: 这就是新建的静态库. 这时候可以发现有两个工程可供选择: 第一个是可执行工程,第二个是静态库,如果要编译静态库,则选择第二

(一〇四)使用Xcode6创建framework动态静态库

在Xcode6以前,创建framework可以使用iOS-Universal-Framework模板来创建framework,现在苹果已经提供了模板,如下图选择: 使用此模版创建的默认是动态库,方法和上节提到的.a一样,也可以使用lipo来合并真机和模拟器的库. 还有自定义动态库的应用是不被允许上传的. 动态库应该被添加到的位置如下:在工程配置的General之中. 因此应该生成静态库,更改配置的方法如下: framework相比.a,优点是会自动把资源包含到framework内. 版权声明:本

iOS中静态库-.a文件生成和使用

最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一般的工程的话, 解决方法有两种: 我可把嵌套工程里面的文件拖拽出来. 修改一些属性什么的应该可以使用了 还有一种方法就是我把嵌套里面的工程整个生成一个静态库文件.把我需要使用的文件的.h暴露出来使用.但是这个工程比较奇葩. 他里面是c++de一些文件. 如果直接拖拽的话会有各种引用文件错误的问题.

项目中遇到的问题-2:编译第三方静态库报错、查看静态库的类型、绘制圆形

这一周比较折腾,由于项目应用涉及到和其他产品线APP的互相通信,在高层领导英(yi)明(ta)神(hu)武(tu)的战略指导下,我开始了与其他组同事的联调之旅.这几天鄙司负责产品的上级同事莅临监工,对现在的情况又提出了一些改进,作为一名程序猿,我已经奉上我的双膝... 一.集成公司其他组的.a静态库,报错:duplicate symbole for architectecture i386 XXX  查了一下报错的地方,都是指示.a的库和工程里面某些.m文件冲突,正好同事提到之前有碰到过这种情况

Xcode中导入.a静态库后报错添加-force_load或-all_load

第一种方法: 以前在做项目的时候在Xcode中倒入一个三方SDK的时候,会有一些.a的静态库,这时候如果直接编译运行就会报错.当时只知道往build settings的linker flags 里面添加-force_load和.a文件的路径.最近又多次用到,这里总结一下. 例如在Xcode中倒入一个SIPSKDK,如下,这里面包含了一个.a的静态库. 如果直接运行的没用到里面方法的时候运行时没问题的,但是一旦导入头文件,并创建SIPClient对象的时候就会报错,如下所示: 这里报错的原因主要是

iOS 静态库,动态库与 Framework

iOS 静态库,动态库与 Framework 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时候需要

Android中集成第三方库的方法和问题

声明: 1. 本文参考了网上同学们的现有成果,在此表示感谢,参考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决办法.第一,第二部分为参考网上同学们的成果加以整理而成. 3. 欢迎转载,交流,请尊重作者劳动成果:转载请注明出处,谢谢! Android中使用第三方库可能有两种:Java库.jar和原生库.so/.a,如果只是做上层APK开发,这两种库都可以通过Eclipse集成开发环境进行集成,如果是平台级开发,则都可通过源码集成.本文整理这两种集成方式使用步骤,以下假设

iOS-工程和工作空间、静态库和框架之间的关系

使用Xcode创建的工程Project是单独分开的,如果想要几个工程同时存在,可以通过创建工作空间Workspace.工作空间是对各工程的集合,工程文件名的后缀为.xcodeproj,工作空间文件名的后缀为.xcworkspace. 静态链接库 在公司中有些核心代码,我们不能提供源代码,而又需要复用给其它公司.团队等使用,这时候就需要将此部分的代码封装成静态链接库. 库是没有main函数程序代码的集合,除了静态链接库还有动态链接库,它们的区别是静态链接库可以编译到执行代码中,应用程序可以在没有静