当前位置:   article > 正文

GitHub 上都有哪些值得关注学习的 iOS 开源项目?_afnetworking和mantle封装网络解析

afnetworking和mantle封装网络解析

GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:

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的原生apple一大截。pop就是paper的动画库!

其他。。。待补充,上班时写的,先这么多吧

第一次回答知乎的问题,想着闲了的时候还是要建个blog才行- -

【范文斌的回答(18票)】:

David Chang邀请

看了上面的答案,值得关注学习的开源项目其实还真没有几个。好多答案的repo都是fork到自己github的复制品,贴出来毫无意义。

首先,学习这类开源项目的主要目的是为了实现产品汪需求,如果不是这个目的,完全可以看Explore GitHub,当前最火的开源项目都在这里,当然你需要过滤一下语言。

好了,介绍几个希望能帮助到你。

普通的iOS开发项目基本就是网络、本地存储+一些狂拽炫酷的动画,想想看是不是?

-------------------- 割 ---------------------

网络

网络请求首选AFNetworking,无数个项目证明,只选对的。

解析JSON数据推荐JSONKit,而且优势相当的明显,解析速度拉SBJson好几条长安街。

以前发现过好多次由于SBJson引起的crash,如果还在用SBJson,那请继续。

Reachability也要用起来,时不时检查一下网络状况,然后配合MBProgressHUD告知用户「亲,你丫现在没网啦,别特么戳了。

EGOTableViewPullRefresh是用来下拉刷新的啦,同时配合上LoadMoreTableFooterView(加载更多)就齐活了。

-------------------- 割 ---------------------

本地存储

第一次开发中引入数据库的时候使用过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开源项目的页面,给作者赞一个。

有不完善的地方欢迎指出,我会及时补充上来。

【罗轩的回答(19票)】:

谢邀。

首先告诉你github上搜索所有库的方法(trending只显示25个):在搜索框输入 stars:>1 ,回车,再选择语言,和排序(可以试下most stars)。

以上方法适合没有目标的学习,你可以自己挑感兴趣的看。不过,我推荐的还是,需求为主导,需要用到什么库,就去找什么库。先分析该功能自己会怎么去实现,然后看看开源库是怎么实现的,相互印证,这样子进步很快,关键是印象深刻。

然后下面是我觉得不错的一些开源项目:

  1. nimbus: 框架,文档很齐全,好像比Three20要火一些了。 jverkoey/nimbus · GitHub
  2. AFNetworking: HTTP网络通信库,不多说,超棒。 AFNetworking/AFNetworking · GitHub
  3. RestKit: HTTP库 用来与RESTful的服务进行交互 。 RestKit/RestKit · GitHub
  4. JSONKit: json库,传说比官方的性能要好,我自己没验证。 johnezang/JSONKit · GitHub
  5. SDWebImage: 异步加载网络图片的库,使用超级简单,功能超级强大,也没得说,值得看源代码。 rs/SDWebImage · GitHub
  6. cocos2d-iphone: 2d游戏引擎,想开发游戏可以学学。 cocos2d/cocos2d-iphone · GitHub
  7. MBProgressHUD: 很实用的HUD,和官方几乎开不出区别。 jdg/MBProgressHUD · GitHub
  8. TMCache: 缓存数据,可以缓存到memory或者disk,个人觉得挺不错的。 tumblr/TMCache 路 GitHub
就说这么些吧(大家推荐的其实都是那么一些),主要还是自己用,自己去体会。

ps. 第三方库管理工具,Cocoa Pods非常好用,方便快捷。 cocoapods.org/

【雨中泪雪人的回答(9票)】:

请关注facebook的开源项目,个个都是精品

【李富强的回答(5票)】:

谢邀,第一次受邀请,哈,虽然只是很多人之一,但是还是感到有些小激动

===============================================

我个人觉得类似UI效果的东西,就不需要自己去整理记录了,推荐几个网站:

1. Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com,这个网站刚起步的时候我基本不上,习惯于自己使用书签整理,不过后来发现里面的编辑非常用心,而且整理归纳很有序,可以节省我大量的时间,我才开始使用

2. www.cocoacontrols.com,这个应该是code4app的国外原型,我很早之前就经常上,里面的内容做的也很不错,总体项目水平选的要比code4app高上一些

3. 开源中国 - 找到您想要的开源项目,分享和交流,国内很不错的开源社区,上大学的时候就一直在看了

===============================================

iOS值得学习的类库的话,我可以推荐几个我自己认为写的并且读过的一些源码,这些源码都对我自己在进行iOS开发过程中有很多的帮助和提升,希望能给你提供一些有帮助的地方:

一. XMPPFramework:robbiehanson/XMPPFramework · GitHub,这个如果是做过聊天的通信通信可能会用过,本人因为工作原因,两年前第一次接触这个代码,就对这个大牛非常崇拜。代码值得学习的东西非常多。作者在开发这个框架的时候,同时也开发了非常多的基础库,都非常值得学习。

1. 首先是插件是框架设计,设计的非常优雅,功能强大易扩展,而且写的很简洁,易懂。

2. 作者基于GCD设计的一对多的delegate机制--GCDMulticastDelegate,后来在项目中我尝试使用过这个框架,多个模块依赖于某一个核心组件,使用这个类,可以把耦合问题降到很低,值得推荐。

3. CocoaAsyncSocket,robbiehanson/CocoaAsyncSocket GitHub,这个是让本人又无比崇拜的一个类库,作者根据iOS平台的特性,实现了两套异步socket网络库,一个基于GCD与POSIX Socket开发的socket异步网络库,另外一个是使用CFSocket与runloop实现,我曾经尝试去阅读这个类库,不过后来发现自己能力实现有限,只能看个大概的轮廓。

4. CocoaLumberjack,CocoaLumberjack/CocoaLumberjack GitHub,这个是作者写的一个log系统,实现了分级别的日志系统,不过本人没有使用和学习这个,我们项目没有那么复杂,我是自己使用宏和NSLog写了一个分级别显示的日志系统,只能用于打印,不能像这个日志可以写入文件。

5. KissXML robbiehanson/KissXML GitHub,我们平时一般使用json格式的数据,除了组装xmpp聊天消息,对这个没有怎么使用过,不敢评论。

二. AFNetworking:AFNetworking/AFNetworking · GitHub,毫无疑问,最火的网络库,本人11年开始做iOS开发的时候,是使用ASI的,一直没有使用过AFNetworking,直到12年的时候,发现ASI作者基本不更新ASI之后,才开始关注这个项目。ASI是基于CFSocket实现的HTTP网络库,作者功底之强,跟上面的老大一样让人拜服,而AFNetworking是基于NSURLConnection,以及iOS7之后出现的NSURLSession为基础开发的。由于AFNetworking基于Apple的封装,少了很多需要自己维护的地方,而且整个项目也会非常整洁,可能效率上也会高于ASI的封装。建议可以把整个项目过一遍,框架设计思想不用说了,里面也可以学习到非常多的技术点。

1. NSOperation的封装与使用,面试的时候很多人只知道apple有NSOperation这个技术,但是实际上使用的机会并不多,只知道是个队列,但是对于如何使用并不知晓。可惜的是,这个只提供了如何使用进非并发Operation的封装。完整学习的话,可以学习ASI中对operation的使用,会更完整一些。

2. HTTP请求的封装,如何封装POST请求,如何进行URL encode,如何使用NSInputstream,可以对HTTP理解有个突破。同时可以学习一下NSURLSession与NSURLConnection的使用。

3. Runloop的使用,建议与ASI实现同步请求的方法进行对比,有条件的话可以跟android的looper机制进行对比,说不定什么时候会使用到,实际xmppframework中也有用到,只是不是核心机制,而且本人没有研究过。本人从11年做iOS到现在,只是使用到过一次,是需要自己实现一个OpenGL的渲染队列,由于需要在子线程中做渲染,无法使用CADisplaylink。刚开始其实是使用GCD的,但发现即使我创建一个dispatch_queue_t,也无法保证block是在子线程中被执行,而且还有较为复杂的内存管理问题,最后使用NSThread与runloop才解决问题。

三. SDWebImage:rs/SDWebImage · GitHub,不需要多说,这个框架写的非常简洁,也是读这个框架,让我明白什么是缓存机制,以及如何做面向对象的封装设计,我之后有的场景也需要自己去设计一些cache,每次都是借鉴这个框架实现,能力有限,自己实在想不出比这个设计思路好的地方,只能借鉴别人的做法。我觉得这个项目还有一个非常值得推崇的地方,就是对category的使用,这个是我今年之前一直忽略的非常重要的设计模式,太适合团队开发了,<cocoa设计模式>上讲的东西,做到现在我才明白怎么回事,可以对比Android使用网络图片,你会发现OC的category真方便。

四.EGOTableViewPullRefresh: enormego/EGOTableViewPullRefresh GitHub,本来不打算说UI方面类库的,但是这个必须说一下。建议读一下这个的源码,以及如何使用,对iOS UI开发有很大提升,这个类库写的很简洁,可以帮助理解delegate机制以及Protocol的概念,还能加深对UIScrollView的理解,推荐读一下。

五. TheElements:TheElements,这个是apple的官方示例代码,每次我朋友问题如何学习iOS的时候,我总会推荐这个samplecode,这个代码让我对iOS开发的理解有个很大的突破。里面并没有使用大量的storyboard和xib隐藏细节,并不是说只能用纯代码做事情,而是可以让人看到里面很多的实现细节,加深理解。读这个代码,我才明白什么是apple说的MVC,还有一个xcode工程到底是如何从main函数运行起来的,非常强烈推荐阅读学习。

===============================================

一不小心写了这么多,擦,但好像并没有说太多的开源工程项目,如果楼主是需要开源项目资讯的话,可能提供不了多少帮助,见谅。这个更多的是我自己的学习开源项目一部分总结,我也没想到会写这么多,最后希望能楼主带来一些小帮助。

【西瓜的回答(3票)】:

最近开源的facebook的pop大家都说不错

我自己用过觉得不错并且更新很活跃的,推荐SDWebImage这个库,里面有UI,动画,多线程,储存,网络等相关的多种技术,很合适拿来学习。这个库星星也很多

其他的嘛,直接在github搜索然后星星多的,应该都会不错

【唐余猛的回答(1票)】:

github.com/trending? 找点感兴趣的看看。Mac下推荐ohmystar Mac App Store-Oh My Star 用于管理自己的stars ,fo 一些人,自己积累自己能用到的就行了

【知乎用户的回答(1票)】:

之前有人整理过Git上好用的iOS库,我搬运一下:

Github repos (iOS)

另外如 @雨中泪雪人 所说,facebook的开源项目个个精品,比如最近开源的pop,之前的KVOController、Chisel都很好,可以看一下。

【唐伟的回答(1票)】:

前面有人回答过了这个收集的较全:Github repos (iOS)

看看别人写的控件Custom Controls for iOS and OS X

有个HTML的框架也可关注关注Framework7 - Full Featured HTML Framework For Building iOS7 Apps

【刘绪斌的回答(1票)】:

优秀的开源库现在有很多,这里有一种比较方便的筛选方法:通过cocoapod的search功能在开发的时候快捷地找到类似的库。例如:pod search "label" 能搜到很多和label想着的开源库。然后通过版本情况,可以初步鉴定哪些库是用的比较广泛的,search结果会列出github的地扯,如果觉得不错,可以打开链接去看看。

下面回答问题:(所有库名,均在直接在github或cocoapod直接搜索得到, 就不引用链接了)

AFNetworking:目前最流行的网络请求库了,不解释。

AFDownloadRequestOperation:对AFNetworking的断点续传的补充

MagicalRecord:很牛逼的coredata的封装,支持多纯种,4600多个star足以说明其实用性。3.0版本修复了原来2.0版本多线程的一些问题。

JSONKit:json解析,解析效率比较高。

JSONModel:json转换成model,自从使用这个封装json,妈妈再也不用担心json解析crash了。谁用谁知道。(注:Mantle上面也推荐了,和JSONModel差不多,不过我没用过,不作评论)

SVProgressHUD:简单好用的Loading库,可以有个小icon。

MBProgressHUD:功能很强大,提供了graceTime, minShowTime可以在加载很快时,不显示loading。

GVUserDefaults:如果你使用UserDefaults来存储数据,请使用这个,直接声明property就行了。

iOSBlocks:使用它,使你很好地理解为什么:“block实现了编程之美”

UIView-Positioning:UIView的坐标设置变得那么简单,three20时,就是类似的一个category。

FXNotifications:支持block的NSNotification,iOSBlocks的补充。

KIF:测试库,QA可以了解一下。

CocoaHTTPServer:在客户端搭建轻量级服务器,用于文件传输等功能。

CocoaLumberjack:很好一个日志输出控制库。

一些比较流行的UI。(直接引用原文内容了,没啥好解释的)

iCarousel: A simple, highly customisable, data-driven 3D carousel for iOS and Mac OS

FPPopover:An alternative API for NSNotificationCenter that doesn't suck

RESideMenu:iOS 7 style side menu

值得深读源代码的:

pop: facebook开源动画库,最近很火

Tweaks:facebook开源库,可用于配置UI之类,感觉可以运用在换肤。

ReactiveCocoa:cocoa响应式编程,新的一种代码风格,非常值得学习。

好了,暂时就这些,得去吃饭了。

【颜世民的回答(0票)】:

Pop

【邢富琨的回答(0票)】:

beeframework不错哦

【吴轶峰的回答(0票)】:

看什么方面了, 一些工具型的 例如SDWebImage, AFNetworking。 框架型的例如ReactiveCocoa等。 Fackbook会有一些不错的开源项目放出来,也值得关注。

另外也可以关注下Xcode Plugin package manager上的小插件, 还有pods上的项目, 太多了。

【杨奕洋的回答(0票)】:

目前在看MBProgressHUD。

可以关注cocoachina,定期会有一些介绍iOS开源库的文章,都挺不错。

【骆杨的回答(0票)】:

erica/iOS-7-Cookbook 路 GitHub 各种基础代码实例 iOS开发秘籍作者

Trending Objective-C repositories on GitHub this month · GitHub 最近流行

CocoaPods/CocoaPods 路 GitHub 包管理工具

【雷平的回答(0票)】:

这些开源库会经常用到:FMDB, JSONKit, MBProgressHUD, OjectiveSugar

可以关注code4app.com

【知乎用户的回答(0票)】:

根据star排序的所有Objective-C的库,应该有些帮助。

github.com/search?

【Hugo的回答(0票)】:

mknetworkkit,dtcotrtext,sdwebimageview

【ivan的回答(0票)】:

TPKeyboardAvoiding

【任玺的回答(0票)】:

ASIHttpRequest

感谢楼主的邀请,之前都只是看知乎,这次第一次参与进来,随便发了个自己常用的,没想到还有同学回复我,真是和大家交流才有提高,此贴收集了很多宝贵信息了,果断收藏慢慢学习。

原文地址:知乎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/620004
推荐阅读
相关标签
  

闽ICP备14008679号