总算成功开发完了第一个较大的功能(即时通信)。毕竟不可能什么东西都从轮子开始造,于是用到了一些组件,这里简单列举一下吧。

1. FMDB

作为一种文件型的数据存储方式,SQLite在iOS开发中自然也有用到。

FMDB(https://github.com/ccgus/fmdb)是一个SQLite的Wrapper。它封装了SQLite的方法,简化成三个主要的类:

FMDatabase:用来执行SQL,表示一个SQLite数据库

FMResultSet:显示FMDatabase查询的结果

FMDatabaseQueue:多线程情况下使用。

具体的API就不多介绍了。不过需要提到的是:iOS官方提供的存储数据的方法是Core Data。不过那又是另外一个topic了。

2. Emoticon

从iOS5开始,增加了一个Emoji (絵文字)的键盘(默认隐藏)。

当然实际上这只是对于类似@"\ue415"的字符串的系统内置自动转换。如果要实现这个的话,不需要写什么额外的代码。

但是如果你要像我一样做一个自定义的Emoticon(发送表情)的话,就有的苦好吃了。。。

https://code.google.com/p/emotionlabel/ 有一个基于DTCoreText的类EmotionLabel。不过我最终没有用这个类,是因为在引入DTCoreText的时候,其中的Color相关的类和我应用中的类冲突了。。。另外还有一些很奇怪的bug,比如发送完消息后会出现一个Bad Access的运行时错误,我最终也没debug出来到底是由于什么原因造成的。。。可能是因为我没用ARC吧。

我最终实现的方法非常土鳖:将一个UILabel中的每一个字符拆成一个UILabel,并找出特定的字符串(例如[:10],将其替换为UIImage。存在一个很严重的bug:没法处理一个单词中的换行问题。当然也可以靠加“-”或检测空格来回避,但存在deadline这个东西。。。

3. 自定义键盘

这个没用到什么组件,全手工从头开始打造。

可以参考以下两篇文章:

http://gregheo.com/blog/ios-custom-keyboard/

http://thekspace.com/home/component/content/article/63-ioscustomkb.html

4. SBJsonParser

这个是用来解析Json数据的库。

虽然这名字有点那个。。。

5. WEPopover

https://www.cocoacontrols.com/controls/wepopover

这是一个弹出矩形弹出框的控件。似乎Evernote也有用到。

6. GANTracker

如果担心在手机上没法用Google Analytics的话,可以调用这个库。

全名应该是Google Analytics SDK for iOS v1 (Legacy)

https://developers.google.com/analytics/devguides/collection/ios/devguide?hl=ja

iOS学习笔记9 - 组件库介绍1的更多相关文章

  1. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  2. iOS学习笔记17-FMDB

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  3. iOS学习笔记17-FMDB你好!

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  4. [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading

    上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...

  5. iOS学习笔记20-地图(二)MapKit框架

    一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...

  6. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  7. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  8. iOS学习笔记之UITableViewController&UITableView

    iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...

  9. iOS学习笔记-自定义过渡动画

    代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...

随机推荐

  1. linux grep的选项

    grep  -i          关闭大写和小写敏感性 grep      -v    打印全部不包括. . 的行(屏蔽某些条目) grep     -l     打印包括模式的文件名称 grep  ...

  2. 【云计算】Ubuntu14.04 搭建GlusterFS集群

    1.修改 /etc/hosts 所有服务节点执行(如果集群中没有DNS,可忽略此步骤): 10.5.25.37 glusterfs-1-5-25-3710.5.25.38 glusterfs-2-5- ...

  3. powerdesigner里建物理模型图时choose DBMS为空怎么办?

    RT 出现如下对话框,是因为需要“DBMS”的规则文件夹 点击下图文件图标,浏览,找到安装目录里面PowerDesigner 15\Resource Files\DBMS,就可以了. 在此记录一下,希 ...

  4. http keep-alive 解释

    1.概念 keep-alive示例: keep-alive模式(又称持久连接.连接重用)时,keep-alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keep-alive功 ...

  5. 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)

    1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...

  6. MySQL数据库的查询缓冲机制

    MySQL数据库的查询缓冲机制 2011-08-10 11:07 佚名 火魔网 字号:T | T 使用查询缓冲机制,可以极大地提高MySQL数据库查询的效率,节省查询所用的时间.那么查询缓冲机制是怎样 ...

  7. init: cannot execve(‘XXX’):Permission denied问题

    近期在给android 4.3系统进行root时候,一直出现例如以下的红色权限问题  :  7.695741] Freeing init memory: 236K [    8.555286] ini ...

  8. win7保护眼睛的颜色设置方法(85,125,205)

    win7保护眼睛的颜色设置方法(85,125,205) 在电脑桌面空白处点击右键“个性化”按钮. 在弹出的对话框单击“窗口颜色”. 在弹出的新的对话框中单击“高级外观设置”. 在弹出的窗口颜色和外观中 ...

  9. 阿里云web播放器

    原文地址:https://help.aliyun.com/document_detail/51991.html?spm=5176.doc61109.6.703.ZTCYoi 一.概念说明 1. pla ...

  10. vue.js使用之计算属性与方法返回的差别

    <!DOCTYPE html> <html> <head> <script src="https://unpkg.com/vue@2.4.2&quo ...