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