本部分来至知乎吴辉斌的回答
作者:吴辉斌链接:https://www.zhihu.com/question/22914651/answer/25089054
GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:
- ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:
GitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之。 - Mantle:Mantle/Mantle · GitHub:
又是GitHub自家的产物,轻量级建模的首选,也可以很好的配合CoreData工作。 - AFNetworking:AFNetworking/AFNetworking · GitHub::
iOS7之前,苹果自带的网络库有多难用!matt大神的AFNetworking绝对可以解放你。使用苹果的NSURLRequest及iOS7的NSURLSession,清晰的架构,足够的文档,可以认为是第三方开源库的楷模了。 - BlocksKit: pandamonia/BlocksKit 路 GitHub
本人相当偏爱Functional Programming,Objective-C中的block绝对满足我的口味。但想用好block也不是很容易,如果对block有爱,就请使用这个库吧。 - Nimbus:jverkoey/nimbus · GitHub
第一次关注nimbus是因为Facebook的Three20开源库。可惜Three20库已死,主要作者跳出来,写了nimbus。 - pop: facebook/pop · GitHub
facebook出品的paper,动画效果太好了,赶超apple的原生app一大截。pop就是paper的动画库! - GPUImage: BradLarson/GPUImage ยท GitHub
iOS7出来时,很多好看的效果,其实都是对图像的各种处理(比如模糊效果)。图像处理看来以后也是iOS开发的必备技能之一了。而GPUImage,就是能快速处理各种图像效果的利器!
以下部分来至知乎知乎用户的回答
作者:知乎用户链接:https://www.zhihu.com/question/22914651/answer/25137141
网络
AFNetworking
❌JSONKit(推荐使用YYModel)
Reachability
SVPullToRefresh**
(替代 EGOTableViewPullRefresh**和 LoadMoreTableFooterView**)
网络请求首选AFNetworking,无数个项目证明,只选对的。
Reachability也要用起来,时不时检查一下网络状况,然后配合MBProgressHUD告知用户「亲,你丫现在没网啦,别特么戳了。
使用SVPullToRefresh**处理刷新。
-------------------- 割 ---------------------
数据解析(JSON)
YYModel (推荐)
Mantle
MJExtension**
jsonmodel
推荐使用YYModel,解析效率可以查看下图(iPhone6上基于解析Github用户10000测试)
可以看到YYModel几乎接近手动解析JSON数据,同时还提供了很多便利的方法。(例如接口返回一个名字叫做id的字段,id。。。厉害了word哥)
本地存储
FMDB
Core Data
❌SDWebImage (推荐 FlyImage )
❌TMCache(由于TMCache已经不在维护,建议大家使用PINCache,感谢 @曾源IvanIsStrong指正,参阅tumblr官方文章)
PINCache
FlyImage (集SDWebImage, FastImageCache and AFNetworking**优点与一身)
FlyImage在iPhone6 Plus上处理『当图片滚动时』场景所消耗的内存,可以看到几乎和UIKit占用的相当,SDWebImage可以下课啦哈哈。
这张图是FlyImage处理170张小图时的内存表现,同样完爆SDWebImage,并且从帧率上可以看出SDWebImage已经卡到爆炸了。我正计划换掉SDWebImage,另外对于FlyImage处理GIF时的表现暂不清楚,所以有大量GIF图需要处理的同学仍需自行测试。
第一次开发中引入数据库的时候使用过FMDB,其实蛮强大的,只不过需要写sql语句,select * from user(从user表中筛选出全部数据)。
后来慢慢的抛弃了它,一点也不面向对象。好吧,其实我是想说还是CoreData好用,至少你不会因为不会写sql而没法保存数据。(接手过的项目竟然还有全部存NSUserDefault的,真是没脾气了)
看过一篇对比CoreData和FMDB查询大数据性能的文章,FMDB赢了,不过还是推荐用CoreData。
------------- 割 ---------------
动画效果
MBProgressHUD
SVProgressHUD (推荐)
pop
上面说到的没网了提示用户的MBProgressHUD,用起来吧,当然还有很多转菊花(loading)的开源项目,同样是我使用最多的。
pop是facebook paper使用的动画效果,开源了出来,很赞啊,不过应用到项目中的可能性很低。。。太特么炫酷了。
--------------- 割 ---------------
其他
第三方库管理工具,CocoaPods,有时间可以学习一下。 CocoaPods GitHubGithub repos (iOS) 这是一个收集了很多iOS开源项目的页面,给作者赞一个。
Carthage 另外一款包管理器,可以尝试。
有不完善的地方欢迎指出,我会及时补充上来。
持续更新中。。。