標籤:
ASIHTTPRequest 是一個直接在CFNetwork上做的開源項目,提供了一個比官方更方便更強大的HTTP網路傳輸的封裝。它的特色功能如下:
1,下載的資料直接儲存到記憶體或檔案系統裡
2,提供直接提交(HTTP POST)檔案的API
3,可以直接存取與修改HTTP請求與響應HEADER
4,輕鬆擷取上傳與下載的進度資訊
5,非同步請求與隊列,自動管理上傳與下載隊列管理機
6,認證與授權的支援
7,Cookie
8,請求與響應的GZIP
9,代理請求
1,添加ASIHTTPRequest相關檔案到Xcode項目中,所需檔案清單如下:ASIHTTPRequestConfig.h ASIHTTPRequestDelegate.h ASIProgressDelegate.h ASICacheDelegate.h ASIHTTPRequest.h ASIHTTPRequest.m ASIDataCompressor.h ASIDataCompressor.m ASIDataDecompressor.h ASIDataDecompressor.m ASIFormDataRequest.h ASIInputStream.h ASIInputStream.m ASIFormDataRequest.m ASINetworkQueue.h ASINetworkQueue.m ASIDownloadCache.h ASIDownloadCache.m ASIAuthenticationDialog.h ASIAuthenticationDialog.m Reachability.h (在源碼的 External/Reachability 目錄下) Reachability.m (在源碼的 External/Reachability 目錄下)
2,添加類庫CFNetwork.framework SystemConfiguration.framework, MobileCoreServices.framework, libz.1.2.5.dylib這幾個類庫
3,匯入標頭檔 #import “ASIHTTPRequest.h”
建立一個同步請求
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request startSynchronous];NSError *error = [request error];if (!error) {NSString *response = [request responseString]; 一般情況下,應該優先使用非同步請求代替同步請求,當在主線程中使用ASIHTTPRequest同步請求,應用程式的介面會鎖定,無法進行任何操作,直到請求完成。建立一個非同步請求 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request setDelegate:self];[request startAsynchronous]; - (void)requestFinished:(ASIHTTPRequest *)request{// 當以文本形式讀取返回內容時用這個方法NSString *responseString = [request responseString];// 當以二進位形式讀取返回內容時用這個方法NSData *responseData = [request responseData];}- (void)requestFailed:(ASIHTTPRequest *)request{NSError *error = [request error];}
如果程式啟動了ARC,需要對檔案設定-fno-objc-arc
ARC是iOS 5推出的新功能,全稱叫 ARC(Automatic Reference Counting)。簡單地說,就是代碼中自動加入了retain/release,原先需要手動添加的用來處理記憶體管理的引用計數的代碼可以自動地由編譯器完成了。該機制在 iOS 5/ Mac OS X 10.7 開始匯入,利用 Xcode4.2 可以使用該機制。簡單地理解ARC,就是通過指定的文法,讓編譯器(LLVM 3.0)在編譯代碼時,自動產生執行個體的引用計數管理部分代碼。有一點,ARC並不是GC,它只是一種代碼靜態分析(Static Analyzer)工具。
那麼在xCode中經常需要匯入一些外來的代碼檔案,如果匯入的檔案使用了ARC機制而你的當前項目沒有使用ARC,那麼xCode會給出警告,或者報錯。我們該如何處理這些問題呢:
查看ARC 是否開啟,"Objective-C Automatic Reference Counting"選項為YES,表示開啟。
點擊項目導航檔案--> 選中Targets--> 選擇 Build Phases --> 展開Compile Sources
這個時候,我們看到第二列的名稱為:Compiler Flags
雙擊你所要使用ARC的檔案,並輸入 -fobjc-arc,
那麼現在這個檔案就可以在編譯時間使用ARC機制進行編譯了。
同上,如果想讓使用ARC機制的代碼不使用ARC機制,只需要輸入 -fno-objc-arc
ios開發 ASIHTTPRequest類庫