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的使用,這個是我今年之前一直忽略的非常重要的設計模式,太適合團隊開發了,&
四.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)。
以上方法適合沒有目標的學習,你可以自己挑感興趣的看。不過,我推薦的還是,需求為主導,需要用到什麼庫,就去找什麼庫。先分析該功能自己會怎麼去實現,然後看看開源庫是怎麼實現的,相互印證,這樣子進步很快,關鍵是印象深刻。
然後下面是我覺得不錯的一些開源項目:
- 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
就說這麼些吧(大家推薦的其實都是那麼一些),主要還是自己用,自己去體會。
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確實太強大)
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 上有哪些精美、優雅到藝術品水平的應用?