中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS網絡開發(2)使用NSURLConnection

發布時間:2020-06-11 08:09:22 來源:網絡 閱讀:293 作者:ymanmeng123 欄目:移動開發
  • NSURLConnection介紹

NSURLConnection可以非常便捷的發送同步或異步網絡請求

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handler

    出于各方面的考慮,蘋果在iOS9.0開始棄用NSURLConnection,而是用NSURLSession代替。



  • 同步的網絡請求

NSData數據類,從URL中獲取數據創建對象的方法,就屬于同步請求,其弊端是無法獲得應答對象。

NSURLConnection提供類方法,快速發送一個異步請求

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error

     入參request:請求對象(url、請求類型、請求參數)

     出參response:響應對象

     出參error:錯誤對象(如果出錯的話)

     返回值:響應數據


如:請求獲取一個圖片資源

     iOS網絡開發(2)使用NSURLConnection


同步請求的弊端:

     請求過程耗時,會使當前線程阻塞,無法進行其他操作

     特別是在主線程中調用時,此過程中App將無法進行任何UI操作。



  • 異步的網絡請求 — 與多線程配合

即,將同步請求的操作放在子線程中執行

     需要注意的是:子線程不能更新UI,更新UI操作需要回到主線程中完成

如:使用GCD

     iOS網絡開發(2)使用NSURLConnection


  • 異步的網絡請求 — 發送異步請求方法

NSURLConnection提供了一個發送異步請求的方法

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handler

    異步操作,當前線程并不等待請求過程的完成,故不能通過參數或返回值獲得結果

     異步操作獲得結果的操作通常有幾種做法:代理、通知、block


該操作使用的是block方式,block中的參數通常是獲得結果(響應對象、響應數據、錯誤對象)

     iOS網絡開發(2)使用NSURLConnection


  • 異步的網絡請求 — 使用代理監聽請求過程

NSURLConnection對象包含一個代理屬性

     提供代理協議<NSURLConnectionDelegate><NSURLConnectionDataDelegate>

常用的代理方法:

// 接收到響應對象
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
// 收到部分或全部數據
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
// 完成響應數據的接收
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
// 請求失敗
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError*)error

如:

     iOS網絡開發(2)使用NSURLConnection


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉善县| 广河县| 中超| 新宾| 鹿泉市| 岳普湖县| 台中县| 盐山县| 杭锦后旗| 莱西市| 德兴市| 莱阳市| 宁安市| 阿勒泰市| 海原县| 桂东县| 卫辉市| 栖霞市| 积石山| 应用必备| 曲麻莱县| 仁化县| 卓资县| 九江市| 新闻| 平湖市| 崇阳县| 康乐县| 沙田区| 宜章县| 黄龙县| 延长县| 宜宾市| 凤山县| 夏邑县| 海口市| 临沭县| 漳浦县| 乌拉特中旗| 迁安市| 个旧市|