iOS之常用第三方庫的介紹

因爲iOS SDK相對比較底層,所以開發者就得受累多做一些體力活。不過幸運的是,有很多第三方的類庫可以用來簡化很多不必要的工作。

(1)AFNetworking

目前比較推薦的iOS網絡請求組件,默認網絡請求是異步,通過block回調的方式對返回數據進行處理。

需要注意的是AFNetworking對服務器返回的ContentType要求比較嚴格,默認只支持application/json的返回。所以可能需要添加對text/html返回的支持,否則可能無法獲得返回數據。

另外就是文件上傳,這裏推薦使用第二種:

[formData appendPartWithFormData: name:];
[formData appendPartWithFileData: name: fileName: mimeType:];

第一種只需要傳入表單名和文件流,源碼也是根據文件流獲得對應的文件名和文件類型,然後調用第二種方法。但是樓主遇到了使用第一種方法,提交後後臺判斷爲非文件上傳,無法獲得文件流。還有如果後臺是根據文件後綴文件類型,那麼第一種也無法使用。

AFNetworking是異步的,也可以使用同步的網絡請求方法.

(2).FMDB

對sqlite數據庫操作進行了封裝,demo也比較簡單。

(3).MBProgressHUD

也是iOS項目常用的一個組件,用於顯示過渡效果的,比如網絡請求之前顯示loading,網絡結束隱藏loading。建議封裝在BaseViewController中,所有ViewController繼承就能使用。

(4).MJRefresh

這個是李明傑老師的作品,自己的OC基礎就是看他的視頻半個週末就基本拿下了。MJRefresh主要用於刷新操作,提供了常用的刷新操作,還有刷新動畫,用着很好用。建議把方法封裝在BaseViewController中,這樣修改刷新操作時,就只需要改動一份。(之前用的舊版MJRefresh,只支持普通的刷新,不支持動畫,後來更新後版本變化比較大,舊的方法已經不推薦使用了,所以還是封裝基類中使用比較好,方便以後修改)

(5).SDWebImage

也是iOS最常用的一個組件,用戶加載網絡圖片,可以緩存到本地。大概原理時,第一次加載後,會根據url加密作爲文件名緩存在本地,如果再次加載圖片時,就直接從本地加載。用着也比較簡單。這裏也分享遇到的一個問題,先從網絡加載一張小圖,然後小圖作爲佔位圖,再從網絡加載一張大圖。

[imageView sd_setImageWithURL:[NSURL URLWithString:imageURLString] placeholderImage:DefaultPostPic];
[imageView sd_setImageWithURL:[NSURL URLWithString:_bigImageURLStringArray[i]] placeholderImage:imageView.image options:SDWebImageDelayPlaceholder completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
}];

(6).RDVTabBarController

一個TabBar組件,可以方便設置底部菜單的文字圖片,點擊效果,小紅點提示等。

(7).Toast

類似android的toast提示效果,封裝在BaseViewController中,需要的地方進行提示。

(8).XMPPFramework

iOS唯一的xmpp類庫,作者在添加了xep-0198協議支持(流管理,用於xmpp斷線重連)

(9).TPKeyboardAvoiding

用戶鍵盤彈出自動計算高度,進行屏幕滾動操作。

(10).AMR

做即時通訊的音頻處理,目前我們的即時通訊使用的錄音文件是m4a,便於web端的音頻播放。

(11).TQRichTextView

用於做富文本視圖控件顯示,用於即時通訊的表情顯示,以及資源評論的富文本顯示。

(12).CSGrowingTextView

用作即時通訊文本框和評論文本框使用,可以顯示多行輸入。

(13).MJExtension

也是李明傑老師的作品,用於json轉model進行使用,有點類似於java中谷歌的Gson。轉換效率據說也很高,使用也比較簡單,只要前後臺約定好,json直接就轉成了model。一個工作多年的iOS朋友說,一個項目主要的是對model層的管理,他推薦的是Mantle。不過MJ這個更輕量級點,用着也更加簡單

(14).Masonry

Masonry是一個輕量級的AutoLayout佈局框架. 擁有自己的描述語法 採用更優雅的鏈式語法封裝自動佈局 簡潔明瞭 並具有高可讀性 而且同時支持 iOS 和 Max OS X。

(15).CorePlot

與蘋果公司的Core Animation, Core Data, and Cocoa Bindings的技術緊密結合,可以繪製柱狀圖,折線圖,餅圖等多種圖形,基本可以滿足OS X和iOS平臺上的大部分繪圖需求。

(16).XMPP

現在做個實時聊天,XMPP協議算是很成熟的方案了。XMPPFramework一個很不錯的選擇,可以直接和OpenFire服務器打交道。項目不大人手不多的話,可以看看這個。

(17).SSToolkit

SSToolkit算是一個不錯的工具包,提供各種比如編碼、加密、字符串處理等等東西,還提供了一些不錯的自定義控件,作者將他在App中實現的各種各樣的UI效果做成個代碼庫,方便其他人使用,並且文檔非常齊全。。

(18).GPUImage

GPUImage是一個基於GPU圖像和視頻處理的開源iOS框架,提供各種各樣的圖像處理濾鏡,並且支持照相機和攝像機的實時濾鏡; 基於GPU的圖像加速,因此可以加速對實時攝像頭視頻、電影以及image的濾鏡和其它效果處理,並且能夠自定義圖像濾鏡。另外, GPUImage支持ARC。

(19).RegexKitLite

在IOS應用中,經常要輸入數據,然輸入數據,就要校驗數據的合法性,這是我們很自然的聯想到web應用中的正則表達式。然而Cocoa並未支持正則表達式。這是我們可以使用第三方工具(RegexKitLite)來實現正則表達式。

cocopods

CocoaPod並不是iOS上的第三方庫 而是大名鼎鼎的第三方庫的管理工具,在CocoaPod沒有出現之前 第三方庫的管理是非常痛苦的 尤其是一些大型的庫(比如nimbus) 每次對庫進行更新 都可能會非常的痛苦CocoaPod的出現解決了這些問題 ,以Framework的方式引入第三方庫,極大的節約了集成的時間 而且通吃Objective-C和Swift(Swift上的Cathatage我沒有實際用過 但是它的那種集成方式還是比CocoaPod麻煩點)對於一個語言的流行伴隨着的就是第三方庫的豐富,相應的也會出現依賴庫管理的工具。cocoapods之於ObjC,就像maven/gradle 之於java、gem之於ruby那樣,cocoapods基本上是創建在在github社區上的,開源並且社區活躍。

關於第三方庫,同樣不推薦過多使用,如下:
1、消耗時間,一個開源庫,拿過來需要仔細考察代碼質量,確認是否足夠可靠。如果出現問題,需要仔細審查開源庫的內部實現。如果這些工作太消耗時間,還不如自己實現。
2、可維護性差。一旦遇到系統升級、API更換,第三方庫不能確保不出問題。當出問題後也難以找到人來維護。如果跟進第三方庫的改變,仍然容易出現新問題。

發佈了5 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章