GitHub上排名前10的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;

饼图
    hud.mode = MBProgressHUDModeDeterminate;
进度条
    hud.mode = MBProgressHUDModeDeterminateHorizontalBar;
圆环
    hud.mode = MBProgressHUDModeAnnularDeterminate;

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];

<span style="font-size:12px;">// 删除记录
    - (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];</span>


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