GitHub 上都有哪些值得关注学习的 iOS 开源项目?

本文精选了GitHub上值得关注的iOS开源项目,涵盖了网络、动画、本地存储等多个方面,旨在帮助iOS开发者提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GitHub 上都有哪些值得关注学习的 iOS 开源项目?

如果仅按照 GitHub 月流行查看 Objective-C 项目的话有 ── Trending Objective-C repositories on GitHub this month
按投票排序 按时间排序

53 个回答

吴辉斌移动互联网iOS开发工程师

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的原生app一大截。pop就是paper的动画库!
7. GPUImage: BradLarson/GPUImage ยท GitHub
iOS7出来时,很多好看的效果,其实都是对图像的各种处理(比如模糊效果)。图像处理看来以后也是iOS开发的必备技能之一了。而GPUImage,就是能快速处理各种图像效果的利器!
==========================================
好吧,我承认第一次知乎的回答有点惊喜,没想到这么多人点赞 ^_^

大部分iOS的第三方库都是在苹果的基础框架之上的产物,所以基础很重要,有时间看看WWDC的历年视频,是不错的选择。
最近还是在深入学习ReactiveCocoa,看ReactiveCocoa的源码。对响应式编程还是有很多期待的,有时间也要重温函数式编程(比如Haskell),或者把响应式编程的公开课( Coursera.org)看完。编程范式的选择可以说是相当重要的。未来是多核+并发的时代,函数式编程无疑是更好的选择。
iOS的UI也很重要,但是如果理解apple的CoreAnimation及CoreGraphics框架,大部分UI基本是没问题的。当前,iOS7的各种炫酷效果,也需要对图像的处理有一定理解。说到图形学,OpenCV是一个不错的选择,而OpenGL也是另一个不错的方向(推荐的公开课: Interactive 3D Graphics Course With Three.js & WebGL)。
当然最重要的,还是计算机的各种基础知识了吧,知其然,知其所以然,才是正道~

以上是个人的经验,欢迎交流讨论~

知乎用户,最牛逼的图片社区iOS工程师

David Chang邀请

看了上面的答案,值得关注学习的开源项目其实还真没有几个。

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

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

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

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

网络
(替代 EGOTableViewPullRefresh LoadMoreTableFooterView

网络请求首选AFNetworking,无数个项目证明,只选对的。
解析JSON数据推荐JSONKit,而且优势相当的明显,解析速度拉SBJson好几条长安街。



以前发现过好多次由于SBJson引起的crash,如果还在用SBJson,那请继续。
Reachability也要用起来,时不时检查一下网络状况,然后配合MBProgressHUD告知用户「亲,你丫现在没网啦,别特么戳了。


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

使用 SVPullToRefresh处理刷新。

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


本地存储

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


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

罗轩iOS开发者

尉野知乎用户、kkk xx 等人赞同
谢邀。
首先告诉你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/
谢邀,第一次受邀请,哈,虽然只是很多人之一,但是还是感到有些小激动
===============================================
我个人觉得类似UI效果的东西,就不需要自己去整理记录了,推荐几个网站:
1. Code4App,这个网站刚起步的时候我基本不上,习惯于自己使用书签整理,不过后来发现里面的编辑非常用心,而且整理归纳很有序,可以节省我大量的时间,我才开始使用
2. 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函数运行起来的,非常强烈推荐阅读学习。

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

刘绪斌专注iOS开发,原编码爱好者

优秀的开源库现在有很多,这里有一种比较方便的筛选方法:通过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响应式编程,新的一种代码风格,非常值得学习。


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


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

补充一个github地址:github.com/vsouza/aweso

跟进实时github 趋势:Trending Objective-C repositories on GitHub today · GitHub

Paul King一个极其有求知欲望的学生。

我给 GitHub 上排名前 100 的 Objective-C 项目写了

因为知乎的编辑器不支持表格渲染, 所以还是建议到 GitHub 查看.

若有任何好建议欢迎通过微博跟我联系

GitHub 地址: trip-to-iOS


显示全部
最近开源的facebook的pop大家都说不错
我自己用过觉得不错并且更新很活跃的,推荐SDWebImage这个库,里面有UI,动画,多线程,储存,网络等相关的多种技术,很合适拿来学习。这个库星星也很多
其他的嘛,直接在github搜索然后星星多的,应该都会不错

shanksxiOSER+Linuxer

周天明杨继超 赞同
各类组件大家用的都差不多,而对于架构方面的东西可能成型的第三方并不多,我就推荐几个不错的第三方框架吧~
目前正在研究 samurai-native hackers-painters/samurai-native · GitHub 可以让您使用标准Web开发技术 (HTML+CSS) 构建基于私有浏览器内核的原生应用。现已支持 iOS,后续GeekZoo团队会支持Android。
之前的 BeeFrameWork gavinkwoe/BeeFramework · GitHub samurai-native是BeeFramework的精华,作者前端功力之深,叹为观止!很值得借鉴。缺点是这两个框架都没有多少通俗易懂的教程,学习曲线陡峭~
另外一个框架就是闻名遐迩的RAC: ReactiveCocoa ReactiveCocoa/ReactiveCocoa · GitHub 由Github工程师们开发的一个应用于iOS和OS X开发的函数响应式编程新框架。ReactiveCocoa为开发者带来了函数式编程和响应式编程的思想,被Mattt Thompson称为开启一个新Objective-C纪元。虽然性能较之于Cocoa低了几个数量级,但同时带来的开发效率的提升让不少公司深以为然。花瓣的李忠大神在infoQ的一次采访中就推崇ReactiveCocoa

李忠:ReactiveCocoa底层的实现是比较复杂的,在性能上确实会有一定的影响。一个简单的 [signal subscribeNext: ^(id x){}] 就会有造成很深的callback stack(近40次的调用),相比纯KVO不到10次的调用,速度上慢了至少1个数量级。不过尽管如此,只要subscribe的次数不要过多,性能上还是可以接受的。

在事件响应上,RAC比KVO慢了大概5倍,不过问题不大,在iPhone5上测了下,也就1ms多一点,绝大多数的使用场景都不会有问题。


在一个就是耳熟能详的Nimbus了。



另外Github团队、FaceBook团队开源的东东,个人比较推荐。
附上刚刚创建新项目的Podfile 希望对您有帮助~

RefuseBTIT/IOS开发/ACG/小散/逗逼

自个厚颜推荐自个的一个项目
RFJModel
github.com/refusebt/RFJ
一个JSON Model装载库,功能类似JSONModel,有一些比JSONModel更好的特性。比如声明时定义json的映射、转换关系,支持与@property混写。

@interface ExampleJModel : RFJModel
JProperty(NSString *name, nameInJson);
@property (nonatomic, assign) int64_t tag;
@end

@implementation ExampleJModel
@end

{
"nameInJson":"hello world",
}

NSDictionary *json = ...;
ExampleJModel *model = [[ExampleJModel alloc] initWithJsonDict:json];
NSLog(@"%@", model.name);

另外对服务端不正常的json返回所导致的崩溃做了防护。

知乎用户,海之言脑残粉

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

Github repos (iOS)


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

臧其龙弱者不扶,谁其怀德,强者逃罚,谁其畏威

1.AFNetworking
网络
2.pop
动画
3.MJExtension,JSonModel,Mantle
ORM
4.MMDrawerController
侧边栏
5.JSQMessagesViewController
IM聊天界面范例
6.FLEX
界面内debug
7.GPUImage
图像处理
8.AsyncDisplayKit
异步线程更新 UI
9.BlocksKit
block的扩展工具
10.Masonry
Autolayout扩展工具
11.ReactiveCocoa
响应式编程
12.CocoaLumberjack
log扩展
13.chisel
lldb扩展
创建于 17:11

王炼QQ物联,连接硬件-人,硬件-硬件

泻药。
上面已经推荐得够多,我来说下自己用过的。
1. 0xced/iOS-Artwork-Extractor 提取iOS中的图标资源。
2. rs/SDURLCache 私人订制URL缓存。之前项目要求用UIWebview来实现Native效果,网页中的资源文件会预下载。当WebView请求外部资源时,会根据URL查询并优先使用本地缓存。
3. marcuswestin/WebViewJavascriptBridge UIWebview里的Javascript与Native代码交互。
4. BradLarson/GPUImage 图片的滤镜处理。从中学习opengles的用法,以及shade脚本的写法。
5. robbiehanson/CocoaHTTPServer 手机上的服务器。某视频播放项目,player不接受本地路径的视频文件,需要http服务器作中转
6. TheAmazingAudioEngine/TheAmazingAudioEngine 功能强大,特别是在音效处理,对AudioBus支持很强。使用AudioUnit的底层API。 开始在某语音直播间项目中应用,需要频繁切换录音和播放状态, TAAE不支持,勉强修改,依然Bug不断。后来换成自己写的一套AudioUnit实现。
7. supermarin/ObjectiveRecord 对CoreData进行封装,但不是线程安全的,只用在mini App中。

ha楼iOS开发者,ios.b2mp.cn

=游戏类==================================================
2048 iOS版本 ik/2048 · GitHub
2048 [Siwft] austinzheng/swift-2048 · GitHub
2048 [ObjC] austinzheng/iOS-2048 · GitHub
flappy bird[Siwft] fullstackio/FlappySwift · GitHub
==================================================
iOS8特性学习实例集合[ObjC] shu223/iOS8-Sampler · GitHub
iOS8特性学习,目前已经有28Day的[Swift] ShinobiControls/iOS8-day-by-day · GitHub
==================================================

[广告] iOS走马观花-iOS开源代码快速浏览

徐诺洁癖 IOS开发

朱鹏飞肖玉龙 赞同
上面的回答包含了我用到的所有开源项目,不献丑了
大力推荐Code4App
网站标语:让移动开发者不再重复造轮子
由此总结出开源的目的
1、不重复造轮子
2、集思广益,大家一起造好轮子
3、向别人学习如何造轮子
Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

ivaniOS开发

知乎用户 赞同
TPKeyboardAvoiding
知乎用户 赞同

雨中泪雪人码农,IOS开发

知乎用户、赵玉豪知乎用户 等人赞同
请关注facebook的开源项目,个个都是精品

小糖糖不会造轮子的程序员

前面有人回答过了这个收集的较全: Github repos (iOS)
看看别人写的控件 Custom Controls for iOS and OS X
有个HTML的框架也可关注关注 Framework7 - Full Featured HTML Framework For Building iOS7 Apps

黄兢成iOS开发人员,喜欢睡觉,看书,编程

知乎用户、周正昌hao 赞同

我想推荐的,大多数都被提到了。说两个没有被提到的:

1. Masonry

大大简化AutoLayout的写法。比如

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(superview).with.insets(padding);
}];

2. CocoaLumberjack

日志库。


想到另外的再补充。

骆杨骆杨,iOS开发者,喜欢iOS平台和产品设计

苏颜凉知乎用户 赞同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值