使用官方的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>,注意缺少了这一步工程会报错。

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

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

    上节介绍的方法,只能创建静态库而不能调试,因为直接创建静态库工程并非可执行文件. 本文介绍的方法创建的静态库断点能够在调试时起作用. 为了能够调试静态库,应该在一个可执行工程(例如Single Vie ...

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

    库是代码的集合,根据代码公开程度,分为开源库和闭源库. 其中闭源库主要包括静态库和动态库,是经过编译的二进制文件,看不到具体实现. 静态库的拓展名是.a或者.framework,动态库则是.dylib ...

  3. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  4. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

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

    在Xcode6以前,创建framework可以使用iOS-Universal-Framework模板来创建framework,现在苹果已经提供了模板,如下图选择: 使用此模版创建的默认是动态库,方法和 ...

  6. 【转】iOS动态库和静态库的简要介绍

    静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

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

    Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...

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

    最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...

  9. iOS 静态库,动态库与 Framework 浅析

    静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

随机推荐

  1. SPOJ PHRASES 每个字符串至少出现两次且不重叠的最长子串

    Description You are the King of Byteland. Your agents have just intercepted a batch of encrypted ene ...

  2. RAC日常管理

    RAC日常管理 OEM RAC守护进程 ls -l /etc/init.d/init.* Init.crs init.srsd init.cssd init.evmd RAC日常管理命令 - $ORA ...

  3. 如何理解Spring AOP

    什么是AOP? AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP允 ...

  4. js error

    0x800a0259 - JavaScript 运行时错误: 未知的运行时错误 <p id="navigatorInfo"></p> var txt = & ...

  5. LeeCode

    No1. Given an array of integers, return indices of the two numbers such that they add up to a specif ...

  6. Unity使用C++作为游戏逻辑脚本的研究

    文章申明:本文来自JacksonDunstan的博客系列文章内容摘取和翻译,版权归其所有,附上原文的链接,大家可以有空阅读原文:C++ Scripting( in Unity) 一.C#和C++的通信 ...

  7. ng-book札记——表单

    Angular表单的基本对象为FormControl与FormGroup. FormControl FormControl代表单个input表单字段(field),即Angular表单的最小单元. F ...

  8. JAVA生成数字0~9字母A~Z混合编码0000、0001...0009、000A...000Z、0010......

    分别是求下一个编码 和 输出所有编码 /** * 用1--9加A--Z混合编码 使用ASCII码判断 * LYL * 传一个值 求下一个编码 */ public String getABCDCode( ...

  9. 实体类双向映射进行Json序列化时出现无限循环的解决问题

    1.@JsonIgnoreProperties 指定的字段不会被序列化,如下则ExamPaper的directory字段不会被序列化 @OneToMany(mappedBy = "direc ...

  10. linux系统性能监控--网络利用率

    Linux中提供了许多有助于评估各种 Linux网络性能的监视工具,其中一些监视工具也可用于解决网络问题以及监视性能. Linux内核为用户提供了大量的网络系统信息,这有助于监视网络的健康状态并检测在 ...