一、取消非同步請求
有兩種方法發起非同步請求:[request startasynchronous]或者把request放入佇列(包括nsoperationqueue和asinetworkqueue)。要想取消請求,則使用[request cancel]。需要注意,synchronous請求不可取消。
取消一次請求,request就視為請求erro,會呼叫你給與其或者佇列的delegate函式。如果你想避免這種呼叫,就在取消前把delegate的值置nil;也可以使用cleardelegatesandcancel方法。如下:
// cancels an asynchronous request
[request cancel]
// cancels an asynchronous request, clearing all delegates and blocks first
[request cleardelegatesandcancel];
在使用asinetworkqueue的時候,當cancel乙個請求,佇列裡面其他的請求都將被取消。通過
shouldcancelallrequestsonfailure可以控制這個效果。預設是yes。
/ when a request in this queue fails or is cancelled, other requests will continue to run
[queue setshouldcancelallrequestsonfailure:no];
// cancel all requests in a queue
[queue cancelalloperations];
二、
在請求完成前,要安全的處理delegate釋放的情況
request的delegate屬於弱引用,所以,如果要想在request進行中釋放delegate,那麼清理request的delegate屬性就變得至關重要。大多數情況下,如果delegagte將要被釋放,那麼你也會取消request,因為request的發起者已經釋放,那麼就不需要關心request的狀態了。
下面的例子,我們的控制器保留了asihttprequest的變數,我們在控制器的delloc方法內部呼叫cleardelegatesandcancel這個方法,在控制器釋放前清理request的delegate並且取消request。
ASIHTTPRequest庫的新增
b.把classes裡的檔案,拖到xcode中 c.匯入框架 systemconfiguration.framework mobilecoreservices.framework coregraphics.framework cfnetwork.framework libz.1.2.3.dylib ...
ASIHttpRequest 傳送資料
傳送資料 request addrequestheader referer value 檔案中的資料是需要時才從磁碟載入,所以只要web server能處理,那麼上傳大檔案是沒有問題的。asiformdatarequest request asiformdatarequest requestwith...
ASIHTTPRequest 進度追蹤
每個asihttprequest有兩個delegate用來追蹤進度 uploadprogressdelegate 上載 進度delegate可以是nsprogressindicators mac os x 或者 uiprogressviews iphone asihttprequest會自適應這兩個...