GitHub上排名前10的Objective-C 项目及其常用方法

Objective-C
Objective-C

1. AFNetworking/AFNetworking

作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一。

AFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人都用它取代 ASIHTTPRequest。

AFNetworking中最常用的就是POST和GET请求,除此,它还可以配置HTTPHeader。

GET请求

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

POST请求

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

2. rs/SDWebImage

作者 Olivier Poitrey 是 Dailymotion 的 CTO, 拥有多个不错的开源项目。此项目常用于对从 Web 端接受到的图片进行缓存, 是 UIImageView 的扩展, 应用起来比较简单。
框架中最最常用的方法其实就是这个:

[self.imageView sd_setImageWithURL:[NSURL URLWithString:@"url"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

这个框架中还有 UIButton 的分类, 可以给 UIButton 异步加载图片。

3. ReactiveCocoa

由 GitHub 工程师们开发的一个应用于 iOS 和 OS X 开发的函数响应式编程新框架。它被Mattt Thompson大神称为开启一个新Objective-C纪元。ReactiveCocoa提供了API用来组合、转换一直变化的数据流。

该框架常用于对事件的监听,实时监听 textField 输入的字符串并打印,方法如下:

[[textField rac_signalForControlEvents:UIControlEventEditingChanged]
subscribeNext:^(id x) {
       LxDBAnyVar(x);
}];

为 UIView 添加点击事件

self.view.userInteractionEnabled = YES;
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]init];
[[tap rac_gestureSignal] subscribeNext:^(UITapGestureRecognizer * tap) {
    LxDBAnyVar(tap);
}];
[self.view addGestureRecognizer:tap];

监听 app 进入后台的通知

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIApplicationDidEnterBackgroundNotification object:nil] subscribeNext:^(NSNotification * notification) {
LxDBAnyVar(notification);
}];

4. BradLarson/GPUImage

一款强大的图片滤镜工具, 支持自定义滤镜, 可用来实时处理图片和视频流, 作者是 SonoPlot 公司的 CTO, 在很小的时候便开始接触编程。GPUImage 这个项目从 2012 年开始, 使用 OpenGL 图形程序接口编写, 性能非常好, 现在很多 iOS 程序员都用它来实现 iOS 的模糊效果。该项目的优点不但在于滤镜很多,而且处理效果是基于GPU的,比使用CPU性能更高。

5. SnapKit/Masonry

一个轻量级的布局框架, 同时支持 iOS 和 Mac OS X, 语法优雅, 帮助开发者快速适配不同分辨率的 iOS 设备。

常用方法:

给视图添加新的约束

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;

给视图更新约束

- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;

删除原有所有约束,添加新的约束

- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

6. jdg/MBProgressHUD

作者 Matej Bukovinski 是一位全栈工程师, UI/UX 设计师。是一个显示HUD窗口的第三方类库,用于在执行一些后台任务时,在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口。

默认使用的系统自带指示器

hud.mode = MBProgressHUDModeIndeterminate;
![](https://ww2.sinaimg.cn/large/006tNc79jw1fbgo5p2ubpj306s06jmx0.jpg)

饼图

hud.mode = MBProgressHUDModeDeterminate;
![](https://ww3.sinaimg.cn/large/006tNc79jw1fbgo6b74dpj309u06jt8j.jpg)

进度条

hud.mode = MBProgressHUDModeDeterminateHorizontalBar;
![](https://ww1.sinaimg.cn/large/006tNc79jw1fbgo6zw751j309u06jmx2.jpg)

圆环

hud.mode = MBProgressHUDModeAnnularDeterminate;
![](https://ww2.sinaimg.cn/large/006tNc79jw1fbgo7zc9foj306v06p0sj.jpg)

7. ccgus/fmdb

一个对 SQLite 进行封装的库, 使用起来方便, 简单。

三个重要的类

  1. FMDatabase 表示一个独立的SQLite数据库,可以用于执行SQL 命令语句
  1. FMResultSet 一组查询结果
  2. FMDatabaseQueue 多线程服务,如果想在不同的线程中执行查询和更新的
    操作会用到,它是线程安全的

8. RestKit/RestKit

主要用于 iOS 上网络通信, 允许与 RESTful Web 服务交互, 常用于处理 API, 解析 JSON, 映射响应对象等操作, 简单易用, 方便你把所有精力都放在对数据的操作上。

9. Mantle/Mantle

作者是 GitHub 的员工, 文档写的很清楚: Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application。它是用于Cocoa和Cocoa Touch模型转换的开源库。Mantle可以很轻松地完成JSON接口的模型转换工作。

常用到的就是MTLJSONAdapter和MTLModle。

MTLJSONAdapter则是帮我们把JSON数据绑定到Model的属性里,当然,你不用担心会出现NSNull的情况,因为转换后它会自动设置成nil。

MTLModel是一个抽象类,它帮我们做了很多工作,比如解决前言里提出的一些问题。 我们要建的Model类应该继承于它,此外你的继承类一定还要实现MTLJSONSerializing协议。

10. magicalpanda/MagicalRecord

作者是 Coursera 的 iOS 工程师, 该项目创作灵感来自于 Ruby on Rails 的 Active Record, 主要为方便操作 CoreData 而生, 帮助清除 CoreData 引用的代码, 协助方便 CoreData 的工作,使得你可以非常容易的添加、查找、删除数据。
查询记录
- (void)findData {
*** 查找数据库中的所有数据***
NSArray *person = [Person MR_findAll];

*** 删除记录***

- (void)deleteData {
NSArray *personArr = [Person MR_findByAttribute:@"age" withValue:   [NSNumber numberWithInt:25]];
for (Person *person in personArr) {
[person MR_deleteEntity];
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
}

原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容