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 进行封装的库, 使用起来方便, 简单。
三个重要的类
- FMDatabase 表示一个独立的SQLite数据库,可以用于执行SQL 命令语句
- FMResultSet 一组查询结果
- 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];
}
原文链接