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

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. php 中 拓展 xdebug的完全理解

    question: Xdebug unable to connect to client, where do I start debugging the debugger? I'm setting u ...

  2. The WebSocket Protocol

      [Docs] [txt|pdf] [draft-ietf-hybi-t...] [Diff1] [Diff2] [Errata] Updated by: 7936 PROPOSED STANDAR ...

  3. 关于configure和Makefile

    http://blog.csdn.net/lltaoyy/article/details/7615833 转篇文章,讲的不是很清楚,再附上几个资料连接,来自http://www.linuxdw.com ...

  4. 菜单下拉效果demo记录

    <!doctype html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. Expression-Based Access Control

    Expression-Based Access Control Spring Security 3.0 introduced the ability to use Spring EL expressi ...

  6. attributes vs properties --记于jquery attr不能正确更新input的value值后

    最近做的前端页面是个单页面应用,需要经常给个input赋值什么的. 我常用的方式是$('#id').attr('value','XXXX'),一直可以正常使用.今天突然发现一个问题,某个要赋值的inp ...

  7. Wireshark Lua: 一个从RTP抓包里导出H.264 Payload,变成264裸码流文件(xxx.264)的Wireshark插件

    Wireshark Lua: 一个从RTP抓包里导出H.264 Payload,变成264裸码流文件(xxx.264)的Wireshark插件 在win7-64, wireshark Version ...

  8. 算法笔记_072:N皇后问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 把n个皇后放在一个n*n的棋盘上,使得任何两个皇后都不能相互攻击,即它们不能同行,不能同列,也不能位于同一条对角线上. 2 解决方案 本文采用全排列 ...

  9. ES6 对象扩展

    1.属性和变量可以简写 let birth = '2000/01/01'; const Person = { name: '张三', //等同于birth: birth birth, // 等同于he ...

  10. python --存储对象

    转自:http://www.cnblogs.com/vamei/archive/2012/09/15/2684781.html 在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步 ...