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

GitHub上排名前10的Objective-C 项目及其常用方法_第1张图片
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];
}

原文链接

你可能感兴趣的:(GitHub上排名前10的Objective-C 项目及其常用方法)