粉笔网iPhone端使用的第三方开源库

前言

最近有朋友问我粉笔网 iPhone 端使用了哪些第三方的开源库。我在这儿整理了一下,分享给大家。

ASIHttpRequest

ASIHttpRequest 是一个被广泛使用的第三方网络访问开源库。用于提供更加友好的网络访问接口。相信很多搞 iOS 开发的朋友都用过它。
ASIHttpRequest 的主要使用文档可以 参考这里

另外,由于 ASIHTTPRequest 的作者已经公开说明不再维护这个开源项目,并且该项目已经一年多没有更新了,所以我一直在寻找替代的开源库。不过现在暂时还没有找到更好的。

RegexKit

RegexKit 是一个正则表达式工具类。提供强大的正则表达式匹配和替换功能。我们主要使用它来对类似微博的正文替换工作。例如将 @ 某某 换成带链接的,将图片的 URL 换成 img 标签等。

同时,开源库 MGTemplateEngine 也依赖于此库。附上 RegexKit4.0 的官方文档教程

MGTemplateEngine

MGTemplateEngine 是一个模版引擎。我们主要使用它来生成单条微博页的内容。我们的单条微博页打算用 UIWebView 来显示,所以内容需要用模版渲染成 HTML 格式。MGTemplateEngine 的模版语言比较象:Smarty, FreeMarker 和 Django 的模版语言。

MGTemplateEngine 的作者官方博客在 这里

我们在使用时,对此开源库的 Filter 类进行了修改,主要增加了 3 个自定义的 filter,用于提供我们的格式化时间,转义 html 和过滤空头象的用户的方式。

JSONKit

JSONKit 是一个比较高效的 JSON 解析库。我之前比较过各大 JSON 解析库的性能(文章在此),JSONKit 算是非常不错的,大概的使用示例如下:

#import "JSONKit.h"

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
NSData *content = [NSData dataWithContentsOfFile:path];
NSDictionary *kitData = [content objectFromJSONData];
NSString *kitString = [kitData JSONString];

GTMNSString

GTMNSString 主要用于转义 HTML 中的特殊字符。以防止 XSS 攻击。

FMDB

FMDB 是一个 sqlite 数据库封装类,需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。在使用上非常简单。如下是一个例子:

NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString * dbpath = [docsdir stringByAppendingPathComponent:@"user.sqlite"];
FMDatabase * db = [FMDatabase databaseWithPath:dbpath];
[db open];
FMResultSet * rs = [db executeQuery:@"select * from People"];
while ([rs next]) {
NSLog(@"%@ %@",
[rs stringForColumn:@"firstname"],
[rs stringForColumn:@"lastname"]);
}
[db close];

BBCustomBackButtonViewController

BBCustomBackButtonViewController 是用于在 ios4 上提供自定义的 NavigationBar 按钮的开源库。使用上异常简单,只需要让自己的 ViewController 继承它就可以了。

我对 BBCustomBackButtonViewController 进行了修改,主要是改动它的自定义的按钮的样式,使其和我们的风格一致。

MTStatusBarOverlay

MTStatusBarOverlay 是一个在 iphone 的顶部 status bar 显示消息的开源库。示例代码如下:

+ (void)showCompletedTextOnStatusBar:(NSString *)text {
NSString * message = [NSString stringWithFormat:@"%@ 成功 ", text];
MTStatusBarOverlay *overlay = [MTStatusBarOverlay sharedInstance];
overlay.animation = MTStatusBarOverlayAnimationFallDown;
overlay.detailViewMode = MTDetailViewModeHistory;
[overlay postImmediateFinishMessage:message duration:2.0 animated:YES];
overlay.progress = 1.0;
}

但是 stackoverflow 上说,有项目因为这个审核被拒,但是新浪微博明显采用了此 UI 方案,所以我们还是大胆用了这个库。后来,我们也顺利通过了审核。

MBProgressHUD

MBProgressHUD 是一个用于显示灰色的加载进度或结果的类。与系统自带的 UIAlertView 相比,MBProgressHUD 由于背影是黑色的,所以视觉上不是那么强烈。我们主要用它来显示一些加载中的提示,以及一些自已会消失的操作结果(例如网络失败等)。

NSStringWrapper

因为自己有多年 Java 开发的经历,我还是不太习惯 Objective-C 连基本的字符串操作都要查文档,而我自己又记不住老长的方法名,所以我把 Objective-C 的字符串基本操作都封装成了 Java 风格的方法调用。这部分是很早前拿周末时间在家里写的,所以是开源的,源代码地址

EGOTableViewPullRefresh

EGOTableViewPullRefresh 一个开源的下拉刷新组件。我对它进行了改进,增加了强制刷新功能。

LoadMoreTableFooterView

LoadMoreTableFooterView 一个开源的上拉加载更多的组件。我做了少量修改,以便让它支持 iPhone5 的分辨率。

zepto.js

zepto 是一个类似 JQuery 的 javascript 开源库,用于实现 css 选择器和一些 dom 操作。它的 api 几乎和 JQuery 完全一样,优点是体积小巧。

ejs

ejs 一个 js 端的模版库。我们主要用于渲染一些 UIWebview 中异步加载的内容。例如笔记的评论,问题的答案。

总结

希望上面的开源库能对你有用。最后分享一张粉笔网全站用到的所有开源项目的图片。

粉笔网iPhone端使用的第三方开源库的更多相关文章

  1. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  2. Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  3. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善

    链接地址:http://www.tuicool.com/articles/jyA3MrU 时间 2015-01-05 10:08:18  我是程序猿,我为自己代言 原文  http://blog.cs ...

  4. Android之史上最全最简单最有用的第三方开源库收集整理

    Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者, ...

  5. iOS项目中常用的第三方开源库

    1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...

  6. CocoaPods:管理Objective-c 程序中各种第三方开源库关联

    在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...

  7. 45.Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  8. (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联

    在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...

  9. 第三方开源库和jar包的区别

    jar包和第三方开源库的根本区别在于,开源库的功能比jar包功能更强大,通过引入库项目可以访问java文件以及该开源库项目下的资源文件,例如图片,layout等文件 jar包中只能放class文件 引 ...

随机推荐

  1. js中ascii码的转换

    今天在把原来用C写的程序移植到javascript上,但是有个地方一直调不通,后来才发现是js奇葩的字符处理出的问题.c中使用的字符处理比如加上一个字符值强制转换一下,在js中就行不通了. 但是js提 ...

  2. 使用VS把ASP.NET 5的应用发布到Linux的Docker上

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:我相信未来应用程序的部署模式首选一定会是Docker,所以.NET社区的朋友也不应该忽 ...

  3. Android三种基本的加载网络图片方式(转)

    Android三种基本的加载网络图片方式,包括普通加载网络方式.用ImageLoader加载图片.用Volley加载图片. 1. [代码]普通加载网络方式 ? 1 2 3 4 5 6 7 8 9 10 ...

  4. tnsnames.ora 监听配置文件详解

    今天是重要的一天.将XML数据导入ORACLE遇到很多问题,学了好多,其中很长时间花在网络配置上,刚开始学,具体原因不知道,先把搜集到的好文章存下来,以后慢慢研究. 监听配置文件            ...

  5. Linux内核system_call中断处理过程

    “平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” men ...

  6. Java中继承thread类与实现Runnable接口的区别

    Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中, ...

  7. hdu 5072 Coprime 容斥原理

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  8. ArcGIS 最短路径计算

    using System;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.Geodatabase;using ...

  9. 关于fragment保存变量的问题

    之前遇到一个问题:某个fragment在打开改变状态好后,然后关闭,要求是再次打开时该状态依然保留 这时候求度娘.自己解决问题后,现在整理过程如下: 1.新定义Bundle saveState=new ...

  10. Android 读取蓝牙设备信息开发

    (1)Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流程是: 1.使用registerReceiver注册BroadcastReceiver来获取蓝牙状态 ...