当你刚开始学习软件开发时,总是会觉得不管怎么学,知识总是学不完的,而且入门一门技术不难,要深入学习一门技术才是真的难。
任何计算机技术,如果不努力学习、进步,就会感觉自己停步不前,没成就赶不说,还会对自己的自信心也是一个严重的打击。对于从事iOS应用开发的童鞋来说呢,入门后到进阶是一个阶段、进阶到高级开发是一个阶段、高级开发到精通又是一个阶段,那每个阶段我们应该学些什么呢?
从事iOS开发,入门后,要成长、进步,落实到项目实战上的学习是少不了的。或许会有很多比你资历老的人给你说,直接上GitHub上看开源项目就行了,那哪些开源项目是比较值得学习的呢?
下面就有一些值得学习的开源项目。
特此声明,本文转自知乎,原文地址:http://www.zhihu.com/question/22914651
1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:
GitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之。
2. Mantle:Mantle/Mantle · GitHub:
又是GitHub自家的产物,轻量级建模的首选,也可以很好的配合CoreData工作。
3. AFNetworking:AFNetworking/AFNetworking · GitHub:
iOS7之前,苹果自带的网络库有多难用!matt大神的AFNetworking绝对可以解放你。使用苹果的NSURLRequest及iOS7的NSURLSession,清晰的架构,足够的文档,可以认为是第三方开源库的楷模了。
4. BlocksKit:pandamonia/BlocksKit 路 GitHub
本人相当偏爱Functional Programming,Objective-C中的block绝对满足我的口味。但想用好block也不是很容易,如果对block有爱,就请使用这个库吧。
5. Nimbus:jverkoey/nimbus · GitHub
第一次关注nimbus是因为Facebook的Three20开源库。可惜Three20库已死,主要作者跳出来,写了nimbus。
6. pop:facebook/pop · GitHub
facebook出品的paper,动画效果太好了,赶超apple的原生app一大截。pop就是paper的动画库!
7. GPUImage:BradLarson/GPUImage ยท GitHub
iOS7出来时,很多好看的效果,其实都是对图像的各种处理(比如模糊效果)。图像处理看来以后也是iOS开发的必备技能之一了。而GPUImage,就是能快速处理各种图像效果的利器!
网络
网络请求首选AFNetworking,无数个项目证明,只选对的。
解析JSON数据推荐JSONKit,而且优势相当的明显,解析速度拉SBJson好几条长安街。
本地存储
第一次开发中引入数据库的时候使用过FMDB,其实蛮强大的,只不过需要写sql语句,select * from user(从user表中筛选出全部数据)。
后来慢慢的抛弃了它,一点也不面向对象。好吧,其实我是想说还是CoreData好用,至少你不会因为不会写sql而没法保存数据。(接手过的项目竟然还有全部存NSUserDefault的,真是没脾气了)
看过一篇对比CoreData和FMDB查询大数据性能的文章,FMDB赢了,不过还是推荐用CoreData。
至于SDWebImage,同样也是早期使用过,和SBJson一样,会有crash,尽管用它来缓存图片很方便,但是我们有更好的解决方案,同样不推荐。
年前的项目中CTO推荐了我们TMCache,tumblr团队使用的一个缓存项目(科普时间:tumblr是国外的轻博客服务,随后国内就出现了点点等同期产品),有时间可以去了解一下,目前应用的不是特别多,当然啦,对我来说。
动画效果
上面说到的没网了提示用户的MBProgressHUD,用起来吧,当然还有很多转菊花(loading)的开源项目,同样是我使用最多的。
pop是facebook paper使用的动画效果,开源了出来,很赞啊,不过应用到项目中的可能性很低。。。太特么炫酷了。
其他
第三方库管理工具,CocoaPods,有时间可以学习一下。CocoaPods GitHub
Github repos (iOS)这是一个收集了很多iOS开源项目的页面,给作者赞一个。
nimbus: 框架,文档很齐全,好像比Three20要火一些了。jverkoey/nimbus · GitHub
AFNetworking: HTTP网络通信库,不多说,超棒。AFNetworking/AFNetworking · GitHub
RestKit: HTTP库 用来与RESTful的服务进行交互 。RestKit/RestKit · GitHub
JSONKit: json库,传说比官方的性能要好,我自己没验证。johnezang/JSONKit · GitHub
SDWebImage: 异步加载网络图片的库,使用超级简单,功能超级强大,也没得说,值得看源代码。rs/SDWebImage · GitHub
cocos2d-iphone: 2d游戏引擎,想开发游戏可以学学。cocos2d/cocos2d-iphone · GitHub
MBProgressHUD: 很实用的HUD,和官方几乎开不出区别。jdg/MBProgressHUD · GitHub
TMCache: 缓存数据,可以缓存到memory或者disk,个人觉得挺不错的。tumblr/TMCache 路 GitHub