iOS開發庫整理
圖像:
1.圖片瀏覽控件MWPhotoBrowser
實現了一個照片瀏覽器類似 iOS 自帶的相冊應用,可顯示來自手機的圖片或者是網絡圖片,可自動從網絡下載圖片并進行緩存。可對圖片進行縮放等操作。
下載:https://github.com/mwaterfall/MWPhotoBrowser
目前比較活躍的社區仍舊是Github,除此以外也有一些不錯的庫散落在Google Code、SourceForge等地方。由于Github社區太過主流,這里主要介紹一下Github里面流行的iOS庫。
首先整理了一份Github上排名靠前的iOS庫(大概600個repos)
除了逛一下每日/每月流行之外,也可以到這里來看一下整個iOS Repos的排名。
下面是一些比較流行的第三方庫:
HTTP
相比較之下,AFNetworking是目前最優秀的一個了:輕量、易用、使用者多、開發者有在積極維護。在AFN出現之前,這個角色是由ASIHTTPRequest扮演的,只是到現在年久失修了。關于AFN和ASI的對比,這里有一篇不錯的文章http://www.infoq.com/cn/articles/afn_vs_asi。除此之外,MKNetworkKit和RestKit也有一定的使用者。
Socket
CocoaAsyncSocket無疑是目前封裝得最完善的Socket庫了:支持異步TCP/UDP,支持GCD,Objective-C接口封裝。。目前沒有發現可以與之相比的同類產品。。
JSON
JSONKit算是第三方中最優秀的一個了:性能很高,文件少。在JSONKit之前,SBJson非常非常流行,但是SBJson性能夠差,只是由于歷史原因仍然存在在某些工程里面。如果工程只需要支持iOS5以上的系統,那就可以放棄那些第三方Json庫了,直接用系統提供的NSJSONSerialization,性能比第三方的好,又是官方API。。
XMPP
現在做個實時聊天,XMPP協議算是很成熟的方案了。XMPPFramework一個很不錯的選擇,可以直接和OpenFire服務器打交道。項目不大人手不多的話,可以看看這個。
基礎工具類
SSToolkit算是一個不錯的工具包,提供各種比如編碼、加密、字符串處理等等東西,還提供了一些不錯的自定義控件,并且文檔非常齊全。
框架
過去有很多人再用three20,這個東西太大太重,文檔又少,到頭來連非死book都停止維護了。作為替代品nimbus現在流行了開來,關鍵在于它文檔齊全。國內有個MVC框架叫BeeFramework,號稱是頂級框架并且功能超過nimbus,有興趣的可以看一下。 ReactiveCocoa把響應式編程這種上流的東西帶了過來,值得試一試。。
數據存儲
還是挺多人(比如我)喜歡直接跟SQLite打交道的,這方面fmdb封裝的很不錯。如果用CoreData來做存儲的,可以用一下MagicalRecord。
圖像處理
GPUImage無疑是這方面的集大成者了。用OpenGL ES2.0來實時處理圖片和視頻流,性能和功能都是頂尖的。
開發和調試工具
PonyDebugger看上去是一個不錯的調試工具,可以在電腦瀏覽器上遠程調試iOS程序、查看試圖層次、網絡等等。CocoaLumberjack是個Log工具,號稱是可以提供企業級Log,使用者也挺多。
為了了解一下目前第三方庫的普及程度,下面列舉一些知名App對第三方庫的依賴。
網易新聞
AppleReachability
ASIHTTPRequest
EGOTableViewPullRefresh
GTMNSString+HTML
MGTemplateEngine
MPOAuth
RegexKitLite
SDWebImage
SSZipArchive
wax
ASIHTTPRequest
EGOTableViewPullRefresh
GTMNSString+HTML
MGTemplateEngine
MPOAuth
RegexKitLite
SDWebImage
SSZipArchive
wax
Garageband
iWork三套件
Pinterest
AFNetworking
AFHttpClientLogger
非死book SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks
AFHttpClientLogger
非死book SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks
多看閱讀
淘寶
MAZeroingWeakRef
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive
微信
QQ
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh
百度地圖
微博
ABContactHelper
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils
人人
可以看到,這些大型的App的依賴都很混亂,所以稍微解釋一下。這些大公司都有一個iOS團隊來協同開發,團隊成員的水平也參差不齊。有時由于歷史原因,例如某個App的某個組件依賴了ASIHttpRequest,但之后的新人改用了AFNetworking,就造成上面這種比較混亂的庫依賴關系。這就造成難以維護、代碼冗余等問題了。所以,引入一個第三方庫一定要慎重考慮,如果可能,盡量自己開發和實現相應的功能,第三方庫盡量只作為參考。 小團隊或者個人開發者可以不必過多考慮,開發速度優先。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!