GitHub 上都有哪些值得關注學習的 iOS 開源項目?

如果僅按照 GitHub 月流行查看 Objective-C 項目的話有 ── Trending Objective-C repositories on GitHub this month


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)。
當然最重要的,還是計算機的各種基礎知識了吧,知其然,知其所以然,才是正道~

以上是個人的經驗,歡迎交流討論~


謝David Chang邀請

看了上面的答案,值得關注學習的開源項目其實還真沒有幾個。

首先,學習這類開源項目的主要目的是為了實現產品汪需求,如果不是這個目的,完全可以看Explore GitHub,當前最火的開源項目都在這裡,當然你需要過濾一下語言。

好了,介紹幾個希望能幫助到你。

普通的iOS開發項目基本就是網路、本地存儲+一些狂拽炫酷的動畫,想想看是不是?

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

網路

  • 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在iPhone6 Plus上處理『當圖片滾動時』場景所消耗的內存,可以看到幾乎和UIKit佔用的相當,SDWebImage可以下課啦哈哈。

這張圖是FlyImage處理170張小圖時的內存表現,同樣完爆SDWebImage,並且從幀率上可以看出SDWebImage已經卡到爆炸了。我正計劃換掉SDWebImage,另外對於FlyImage處理GIF時的表現暫不清楚,所以有大量GIF圖需要處理的同學仍需自行測試。

這張圖是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 GitHub
Github repos (iOS) 這是一個收集了很多iOS開源項目的頁面,給作者贊一個。

Carthage 另外一款包管理器,可以嘗試。

有不完善的地方歡迎指出,我會及時補充上來。

持續更新中。。。


我的網站iOSCodeHub ( iOS Code Hub ) 上收集了開源iOS完整APP代碼, 持續保持更新.


1. Coding iOS 客戶端

Coding官方客戶端. 筆者強烈推薦的值得學習的完整APP.
GitHub - Coding/Coding-iOS: Coding iOS 客戶端源代碼

2. OSCHINA 的 iPhone 客戶端
開源中國的iPhone客戶端源碼
https://git.oschina.net/oschina/iphone-app

3. Git@OSC

Git@OSC iPhone 客戶端,方便用戶查看Git@OSC的項目以及簡單的操作issue等
oschina / git-osc-iphone

4. Firefox for iOS

GitHub - mozilla/firefox-ios: Firefox for iOS

5. zulip-ios
Dropbox收購公司內部社交服務商Zulip,然後全部開源,這是iOS App
GitHub - zulip/zulip-ios: Zulip iOS app

6. iOSSF
SegmentFault官方App
GitHub - gaosboy/iOSSF: SegmentFault官方App

7. iReddit
Reddit iPhone客戶端
GitHub - reddit/iReddit: The iReddit iPhone app

8. Monkey
GitHub第三方iOS客戶端
GitHub - coderyi/Monkey: Monkey is a GitHub third party client for iOS,to show the rank of coders and repositories.

9. Watch
Dribbble第三方客戶端
GitHub - tuesda/Watch: A project which demonstrate how to develop a custom client on android for dribbble.com

10. Voice2Note
懶人筆記iOS客戶端
GitHub - liaojinxing/Voice2Note: 懶人筆記iOS客戶端

11. RSSRead
「已閱」(iOS上開源RSS新聞閱讀器)
GitHub - ming1016/RSSRead: 「已閱」(iOS上開源RSS新聞閱讀器),有興趣?那就Pull Requests吧

12. BeeFancy
BeeFancy仿Fancy官方APP的WIREFRAME,基於BeeFramework
GitHub - BeeFramework/BeeFancy: 仿Fancy官方APP的WIREFRAME,基於BeeFramework

13. SXNews
模仿網易新聞做的精仿網易新聞
GitHub - dsxNiubility/SXNews: High imitation Neteasy News. (include list,detail,photoset,weather,feedback)

14. Doppio
尋找最近的星巴克
GitHub - chroman/Doppio: An open source iOS app to find the nearest Starbucks store using NSURLSession, AFNetworking 2.0, Mantle and Starbucks private API.

15. Anypic
類似於Instagram的一款App
GitHub - ParsePlatform/Anypic: An open source mobile and web app that lets users share photos similar to Instagram

16. 豆瓣相冊
Slowslab iOS應用 豆瓣相冊 精選集 開源項目
GitHub - TonnyTao/DoubanAlbum: Slowslab iOS應用 豆瓣相冊 精選集 開源項目,僅供學習參考

17. ChatSecure-iOS
Objective-C寫的XMPP聊天應用
GitHub - ChatSecure/ChatSecure-iOS: ChatSecure is a free and open source encrypted chat client for iPhone and Android that supports OTR encryption over XMPP.

18. NotificationChat
Objective-C寫的完整的聊天應用
GitHub - relatedcode/EncryptedChat: This is a full native iPhone app to create realtime, text based group or private chat with Parse and Firebase.

19. FakeZhihuDaily
仿知乎日報iOS客戶端
GitHub - gnou/FakeZhihuDaily: 仿知乎日報iOS客戶端

20. ruby-china-for-ios
RubyChina官方客戶端
GitHub - ruby-china/ruby-china-for-ios: Ruby China client for iOS

21. Meizi
豆瓣妹子圖iOS客戶端
GitHub - Sunnyyoung/Meizi: 豆瓣妹子圖iOS客戶端

22. PlainReader
一款 iOS(iPhone + iPad) 新聞類客戶端,內容抓取自 http://cnBeta.com
PlainReader/PlainReader at master · guojiubo/PlainReader · GitHub

23. iOS-2048
用Objective-C實現的2048遊戲
GitHub - austinzheng/iOS-2048: iOS drop-in library presenting a 2048-style game

24. ECMobile_iOS
基於ECShop的手機商城客戶端
GitHub - GeekZooStudio/ECMobile_iOS: 基於ECShop的手機商城客戶端

25. wikipedia-ios
維基百科官方App, 已上架
GitHub - wikimedia/wikipedia-ios: The official Wikipedia iOS app.

26. Sol
漂亮的扁平風格的天氣App
GitHub - comyarzaheri/Sol: Sol° beautifully displays weather information so you can plan your day accordingly. Check the weather in your current location or any city around the world. Implemented in Objective-C.

27. v2ex
v2ex第三方iOS客戶端
v2ex/v2ex-iOS at master · singro/v2ex · GitHub

28. MyOne-iOS
用OC寫的《一個》 iOS 客戶端
GitHub - meilbn/MyOne-iOS: 我的《一個》 iOS 客戶端(OC)

29. WNXHuntForCity
高仿城覓2.0 by-objective-c
GitHub - ZhongTaoTian/WNXHuntForCity: 高仿城覓by-objective-c

30. viewfinder
移動支付公司 Square 將去年收購的照片應用 Viewfinder 開源了,包含服務端、iOS 和 Android 應用代碼
GitHub - viewfinderco/viewfinder: Viewfinder client and server code

31. breadwallet
breadwallet iOS bitcoin wallet
GitHub - voisine/breadwallet: breadwallet

32. novel-design
品趣iOS客戶端
GitHub - ltebean/novel-design: PinQu ios client

33. WWDC-2014
WWDC客戶端
GitHub - indragiek/WWDC-2014: Scholarship submission for WWDC 2014

34. GreatReader
GreatReader PDF閱讀客戶端
GitHub - semweb/GreatReader: A "great" PDF reader for iOS. Available on the App Store.

35. Tropos
天氣客戶端
GitHub - thoughtbot/Tropos: Weather and Forecasts for Humans

36. manong-reading
《猿已閱》碼農周刊iOS客戶端
GitHub - icepy/manong-reading: 《猿已閱》碼農周刊iOS客戶端

37. YoCelsius
一款天氣預報的應用
GitHub - YouXianMing/YoCelsius: 一款天氣預報的應用(已在AppStore上線)

38. 密記iOS版
本應用主要功能是簡單筆記
GitHub - iHTCboy/SecurityNote: 密記iOS版,第一個開發的完整iOS應用,本應用主要功能是簡單筆記。The application of the main function is a simple notes.

39. phphub-ios

PHPHub for iOS is the universal iPhone and iPad application for PHPHub PHPHub - PHP Laravel的中文社區
GitHub - Aufree/phphub-ios: PHPHub for iOS is the universal iPhone and iPad application for PHPHub

40. Brushes

繪圖應用. Painting app for the iPhone and iPad.
GitHub - sprang/Brushes: Painting app for the iPhone and iPad.

41. Inkpad
繪圖應用. Inkpad is a vector illustration app designed from scratch for the iPad.
GitHub - sprang/Inkpad: Vector illustration app for the iPad.

42. wh-app-ios

美國白宮(WhiteHouse)的官方app.
GitHub - WhiteHouse/wh-app-ios

43. cheddar-ios
一款日程管理軟體.
GitHub - nothingmagical/cheddar-ios: Cheddar for iOS

44. newsyc
Hacker News的iPhone客戶端
GitHub - Xuzz/newsyc: An iPhone Hacker News client.

45. WordPress for iOS

WordPress iOS官方客戶端. 筆者強烈推薦的開源項目.
GitHub - wordpress-mobile/WordPress-iOS: WordPress for iOS

46. WikiHow
Wikihow–WikiHow的官方app.
GitHub - tderouin/wikiHow-iPhone-Application: The code for the wikihow"s iphone app

47. Dollar Bets
記錄你和朋友打賭的內容.
GitHub - Rich86man/Dollar-Bets: An iPhone app to keep track of your Dollar Bets

48. Dozuki
iFixit網站的互動修理手冊
GitHub - iFixit/iFixit-iOS: iFixit"s iOS app for iPad, iPhone, and iPod touch

49. Last.fm
Last.fm 的客戶端,國外很火的私人電台.
GitHub - lastfm/lastfm-iphone: The official Last.fm iPhone application

50. ioctocat
GitHub第三方客戶端.
GitHub - dennisreimann/ioctocat: iOctocat v1


51. iTunesPicker
類似AppStore的一個應用
GitHub - appcornerit/iTunesPicker: Discover, search and compare world rankings for apps, ibooks, movies, music videos and music from iTunes (and AppStore) in any available country.

52. TeamTalk
蘑菇街TeamTalk. 開源IM. 筆者強烈推薦.
GitHub - mogujie/TeamTalk: TeamTalk is a solution for enterprise IM

53. shadowsocks-iOS

翻牆工具Shadowsocks. Github目前代碼已經被移除, 不過2.6.3的還是保留著.

GitHub - shadowsocks/shadowsocks-iOS at 2.6.3: Removed according to regulations.

54. MessageDisplayKit
一個類似微信App的IM應用,擁有發送文字、圖片、語音、視頻、地理位置消息,管理本地通信錄、分享朋友 圈、漂流交友、搖一搖和更多有趣的功能。筆者推薦的學習IM的好東西.
GitHub - xhzengAIB/MessageDisplayKit: An IM App like WeChat App has to send text, pictures, audio, video, location messaging, managing local address book, share a circle of friends, drifting friends, shake a fun and more interesting features.


55. NewsBlur
個人新聞閱讀器.
NewsBlur/clients/ios at master · samuelclay/NewsBlur · GitHub


56. VLC for iOS
VLC媒體播放器. 官方頁面提供源代碼下載.
http://www.videolan.org/vlc/download-ios.html


57. Frameless - 全屏Web瀏覽器
GitHub - stakes/Frameless: A chromeless web browser for viewing prototypes.

58. Koala Hates Rain – iOS遊戲

[開源APP推薦] Koala Hates Rain


59. OctoPodium

列出用戶排名基於Github代碼庫的Star數量.

[開源APP推薦] OctoPodium


60. MyPlanSideslip – 我有計劃

GitHub: https://github.com/JimmyFung/MyPlanSideslip

------------------------------------------------------------------------------------


iOSCodeHub ( iOS Code Hub ), 持續保持更新.


謝邀,第一次受邀請,哈,雖然只是很多人之一,但是還是感到有些小激動
===============================================
我個人覺得類似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的使用,這個是我今年之前一直忽略的非常重要的設計模式,太適合團隊開發了,&上講的東西,做到現在我才明白怎麼回事,可以對比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函數運行起來的,非常強烈推薦閱讀學習。

===============================================
一不小心寫了這麼多,擦,但好像並沒有說太多的開源工程項目,如果樓主是需要開源項目資訊的話,可能提供不了多少幫助,見諒。這個更多的是我自己的學習開源項目一部分總結,我也沒想到會寫這麼多,最後希望能樓主帶來一些小幫助。


謝邀。
首先告訴你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非常好用,方便快捷。 http://cocoapods.org/


以下是我整理的iOS開源App的一部分,其中不乏有許多不錯的項目,後續更多都會整理在:iOS開源項目 · MobDevGroup上

  • iBBS-Swift

    一款用Swift寫的BBS客戶端

  • SmallDay

    用Swift 實現的高仿小日子

  • Swift-Radio-Pro

    Professional Radio Station App, created w/ Swift 2.0

  • zulip-ios

    Dropbox收購公司內部社交服務商Zulip,然後全部開源,這是iOS App

  • DesignerNewsApp

    Build a Swift App as a designer

  • firefox-ios

    Firefox for iOS

  • iphone-app

    開源中國的iPhone客戶端源碼

  • Git@OSC

    Git@OSC iPhone 客戶端,方便用戶查看Git@OSC的項目以及簡單的操作issue等

  • Coding

    Coding官方客戶端 GitHub地址

  • Coding iPad版

    Coding官方客戶端

  • iOSSF

    SegmentFault官方App

  • ioctocat

    GitHub第三方客戶端

  • iTunesPicker

    類似AppStore的一個應用

  • Doppio

    尋找最近的星巴克

  • swiftmi-app

    http://swiftmi.com app版本 採用Swift實現

  • Cheddar

    一個日程管理的App

  • BeeFancy

    仿Fancy官方APP的WIREFRAME,基於BeeFramework

  • Anypic

    類似於Instagram的一款App

  • SXNews

    模仿網易新聞做的精仿網易新聞

  • iReddit

    Reddit iPhone客戶端

  • readdit

    Reddit iPad客戶端

  • 豆瓣相冊

    Slowslab iOS應用 豆瓣相冊 精選集 開源項目

  • ChatSecure-iOS

    Objective-C寫的XMPP聊天應用

  • NotificationChat

    Objective-C寫的完整的聊天應用

  • Swift-ZhihuDaily

    用Swift實現的仿知乎日報應用

  • FakeZhihuDaily

    仿知乎日報iOS客戶端

  • edhita

    用Swift實現的iOS平台開源文本編輯器。

  • ruby-china-for-ios

    RubyChina官方客戶端

  • Meizi

    豆瓣妹子圖iOS客戶端

  • HackerNews

    用Swift寫的Hacker News 閱讀 iOS App

  • SwiftHN

    另外一個用Swift寫的Hacker News 閱讀App

  • News-YC

    Hacker News閱讀類iOS App

  • twidere

    twitter 第三方客戶端

  • 2048

    用SpriteKit實現的2048遊戲

  • PlainReader

    一款 iOS(iPhone + iPad) 新聞類客戶端,內容抓取自 http://cnBeta.com

  • swift-2048

    用Swift實現的2048遊戲

  • iOS-2048

    用Objective-C實現的2048遊戲

  • FlappySwift

    用swift實現的flappy bird遊戲

  • ECMobile_iOS

    基於ECShop的手機商城客戶端

  • kxmovie

    用ffmpeg寫的iOS視頻播放器

  • wikipedia-ios

    維基百科官方App, 已上架

  • Sol

    漂亮的扁平風格的天氣App

  • Project-RainMan

    用Swift寫的天氣類App

  • SwiftWeather

    用Swift寫的天氣類App

  • v2ex

    v2ex第三方iOS客戶端

  • V2EXClient

    Swift實現的V2EX iOS客戶端

  • VPNOn

    VPN連接管理,支持Apple Watch,已上架

  • Monkey

    GitHub第三方iOS客戶端

  • JokeClient-Swift

    基於swift,用糗事百科的API簡單做了一個糗百客戶端,可以瀏覽各種段子,瀏覽搞笑圖片,查看精彩評論等.

  • Watch

    Dribbble第三方客戶端

  • MyOne-iOS

    用OC寫的《一個》 iOS 客戶端

  • BaiduFM-Swift

    百度FM swift語言實現

  • WNXHuntForCity

    高仿城覓2.0 by-objective-c

  • Tomate

    圓盤式計時器

  • eigen

    The Art World in Your Pocket or Your Trendy Tech Company"s Tote, Artsy"s iOS app.

  • WWDC

    WWDC app for OS X

  • Voice2Note

    懶人筆記iOS客戶端

  • viewfinder

    移動支付公司 Square 將去年收購的照片應用 Viewfinder 開源了,包含服務端、iOS 和 Android 應用代碼

  • RSSRead

    「已閱」(iOS上開源RSS新聞閱讀器)

  • breadwallet

    breadwallet iOS bitcoin wallet

  • novel-design

    品趣iOS客戶端

  • Brushes

    iPhone和iPad上的畫圖軟體

  • Concurrency

    貨幣換算軟體

  • WhoCall

    誰CALL我 - iOS來電信息語音提醒

  • Mogo-iOS

    Mogo群聊客戶端

  • WWDC-2014

    WWDC客戶端

  • the-oakland-post

    Swift寫的Oakland客戶端

  • GreatReader

    GreatReader PDF閱讀客戶端

  • Tropos

    天氣客戶端

  • manong-reading

    《猿已閱》碼農周刊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地址:https://github.com/vsouza/awesome-ios

跟進實時github 趨勢:Trending Objective-C repositories on GitHub today · GitHub


我想推薦的,大多數都被提到了。說兩個沒有被提到的:

1. Masonry

大大簡化AutoLayout的寫法。比如

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

2. CocoaLumberjack

日誌庫。


想到另外的再補充。


我給 GitHub 上排名前 100 的 Objective-C 項目寫了一些簡短的介紹.

因為知乎的編輯器不支持表格渲染, 所以還是建議到 GitHub 查看.

若有任何好建議歡迎通過微博跟我聯繫

GitHub 地址: trip-to-iOS


雖然作者就是自己,但是我還是要回答一下這個問題 XD

自己用 Swift 寫的 UI 庫:GitHub - TintPoint/Overlay: Flexible UI Framework Designed for Swift

用起來的效果大概是這樣的:

class Button: UIButton, CustomBackgroundColor, CustomTitleColor {
var backgroundColorStyle: ColorStyle = ColorGroup(normal: Color.white, disabled: Color.gray)
var titleColor: ColorStyle = Color.black
}

  • 基於 UIKit,但是面向協議——所以非常靈活,並且很容易就能與其他庫配合使用。
  • 充分發揮了 Swift 的靜態特性,能提供很多編譯時的檢測。
  • 把 Swift 當 DSL 來用,所以寫起來甚至有一點點寫 CSS 的感覺。
  • 擁有完善的文檔和測試。我自己 Swift 寫的項目都在用,所以我也不會棄坑不填的。

更多的介紹在這個專欄:Overlay:一個讓你寫 Swift 像寫 CSS 的 UI Framework
如果英文沒有問題的話,推薦直接看 GitHub:TintPoint/Overlay

-

原本不太在乎自己推廣自己的作品,但是今天看到一個很爛的開源庫都能拿到好多的星星,覺得如果自己認真寫的東西沒什麼知道的話,有點兒虧啊。


瀉藥。
上面已經推薦得夠多,我來說下自己用過的。
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中。


最近把Casa大大的網路模塊抄到公司項目上,收穫超級巨大,建議大家都看看:)

把公司項目的網路模塊參考@反革命攻城獅CasaTaloyum 大大的方案重新封裝了一遍,用起來特別爽。大家可以看看Casa大大的這篇文章有詳細介紹:iOS應用架構談 網路層設計方案 而且還有源碼:casatwy/RTNetworking · GitHub


自己寫了一個GitHub第三方客戶端的App,叫做Monkey for GitHub,主要是用來展示GitHub上的開發者的排名,以及倉庫的排名,並且能夠搜索開發者和倉庫。

GitHub開源地址:coderyi/Monkey · GitHub

App Store地址:iTunes 的 App Store 中的「Monkey for GitHub」


看了一下前面的答案。大家都在推薦的庫我就不提了。不過好像沒人提到JSPatch。 我來手動安利一發吧。(是因為JSPatch的分類不是Objective-C所以沒人提嘛?)
GitHub - bang590/JSPatch: JSPatch bridge Objective-C and Javascript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine. JSPatch is generally used to hotfix iOS App.
這個項目的中文wiki寫的非常好。仔細讀一下是能收穫很多東西的。熱修復的實現這塊用到了很多Runtime的知識。 參考:
JSPatch 實現原理詳解 · bang590/JSPatch Wiki · GitHub
我還是很建議在項目當中添加這個的。不過最好不用它來開發完全的新功能。而是作為修復緊急問題的一種手段。
使用的時候先多看看使用文檔。大部分你會遭遇的情況。基本上都有修復的辦法。
(不得不說Runtime確實太強大)

(不過話說自從有了JSPatch。。。每個版本都會熱修一下。。。捂臉。。。真不是bug寫的多啊。。。:)


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


謝邀。排名前幾的答案已經回答的比較全了。我補充一個最近在看的:RestKit.
RestKit is a framework for consuming and modeling RESTful web resources on iOS and OS X!
說的夠清楚了吧,以下是地址:https://github.com/RestKit/RestKit


TPKeyboardAvoiding


自個厚顏推薦自個的一個項目
RFJModel
https://github.com/refusebt/RFJModel
一個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返回所導致的崩潰做了防護。


各類組件大家用的都差不多,而對於架構方面的東西可能成型的第三方並不多,我就推薦幾個不錯的第三方框架吧~
目前正在研究samurai-nativehackers-painters/samurai-native · GitHub 可以讓您使用標準Web開發技術 (HTML+CSS) 構建基於私有瀏覽器內核的原生應用。現已支持 iOS,後續GeekZoo團隊會支持Android。
之前的BeeFrameWorkgavinkwoe/BeeFramework · GitHub samurai-native是BeeFramework的精華,作者前端功力之深,嘆為觀止!很值得借鑒。缺點是這兩個框架都沒有多少通俗易懂的教程,學習曲線陡峭~
另外一個框架就是聞名遐邇的RAC: ReactiveCocoaReactiveCocoa/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 希望對您有幫助~


推薦個自己今天剛完成的...https://github.com/banchichen/TZImagePickerController
沒錯,看名字就知道是個自定義的圖片選擇器!

(ps:不到一周已有281個star...)
2016.5.23更新,目前已有920個star,表現比較不錯了~
2016.8.12更新:1506個star了...

大家知道系統的UIImagePickerController不支持多選,自己實現一個能多選的吧,iOS8以前和以後是或許圖片資源是兩個不同的庫,寫起來頗費精力。目前github上已有的一些支持多選的圖片選擇器,我覺得體驗都不太好,要麼年久失修、要麼不支持預覽、要麼不支持選視頻、要麼視覺效果有點丑...

所以最近比較閑,於是模仿微信的效果,做了一個自定義的圖片選擇器~

1. 支持多選,選原圖和選視頻,支持預覽圖片和視頻。
2. 適配了iOS6-9系統。
3. 集成只需最少三行代碼。
4. 支持CocoaPods導入,podfile加入這句即可: pod "TZImagePickerController", "~&> 1.0.7"

效果跟微信的差不多一樣~歡迎使用,覺得不錯請給一個小小的star鼓勵一下~

對了,放一張效果圖哈...(上傳失敗了好像,我去...)
還是貼上博客吧:仿照微信的效果,實現了一個支持多選、選原圖和視頻的圖片選擇器,適配了iOS6-9系統,3行代碼即可集成.


2016.5.23更新: 剛剛更新了代碼,現在版本更新到了1.4.2,新增了一些新功能,比如:在照片列表頁新增了拍照按鈕,可以全局記錄哪個相冊已選中了多少張圖片,預覽控制器可以在外界打開。同時Demo頁面也做了一些優化,可以直接刪除選中的照片、可以對照片進行長按排序等。當然期間也修復了許多小bug,表現更加好了。

最值得一提的是,1.4.2版本的性能大幅提升了,在我的iOS9.3.2系統6s設備上(870張照片),平均滑動幀數在58左右,滑動十分流暢,在iOS7.0.4的4s設備上(124張照片),平均滑動幀數在57左右,也十分流暢。經過對比,和QQ的圖片選擇器滑動幀數表現基本一致,都十分流暢,同時都強於微信的圖片選擇器。微信的圖片選擇器,在快速滑動的時候明顯感到有一絲卡頓,通過Core Animation查看發現,微信的圖片選擇器在我的6s設備下幀數平均約52左右,好幾次甚至低於50,在4s設備上則表現更糟一些。下面貼上幀數測試截圖,大家也可以測試一下~(測試截圖請去博客源鏈接查看~ 仿照微信的效果,實現了一個支持多選、選原圖和視頻的圖片選擇器,適配了iOS6-9系統,3行代碼即可集成.)

tip: 如果你用的是老版本,建議你更新到新版,特別是需要適配iOS7甚至6的應用,因為舊版本在iOS7和6下性能比較糟糕...

2016.8.12更新:目前版本1.5.0.....star最近漲好快....


推薦閱讀:

為什麼 OS X 不像 iOS 只有 App Store 唯一軟體安裝渠道?
iOS 7 的圓角圖標是怎樣一個圖形?
如何寫一份好的 App 體驗報告?
什麼水平的開發者應該參加 iOS 7 Tech Talk,會有哪方面的幫助,與會的體驗如何,有什麼感想?
iOS 上有哪些精美、優雅到藝術品水平的應用?

TAG:編程 | iOS 開發 | 開源項目 | GitHub | iOS 開源組件 |