1.異步線程的友善之處就是在于可以同時處理多個任務,并且互相不會影響。最經典的案例就是網絡請求和界面的卡頓之間的關系。其次還有很多讀寫資料之類的耗時操作,這些時候如果用異步線程處理就會達到界面流暢的效果。
2.今天寫網絡請求的封裝的時候遇到了一個問題就是提示框開啟和關閉竟然在資料傳回後同時彈出和關閉。這樣的效果顯示不是我所想要的,而這些就是同步處理的結果。
3.其實不管是AFNetworking還是ASIHttp都是支援多線程下載下傳的,但是你使用的時候必定在此基礎上封裝,而封裝類庫的時候你是否也做到了異步處理就不得而知了。
4.好,廢話到此結束,直接上代碼
//開啟風火輪
[SVProgressHUD showInfoWithStatus:@”正在請求,請稍後”];
requestDic=[NSDictionary dictionaryWithObjectsAndKeys:@”“,@”headIcon”,self.username.text,@”nick”,_reginPhoneStr,@”userId”,_regionCodeStr,@”password”,simCardNum,@”simCard”, nil];
[HSAppConfig registerUserType:PhoneRegisters WithRegistDic:requestDic WithImagesUpload:nil WithRegisterResultBlock:^(BOOL reslut) {
if (reslut) {
[SVProgressHUD showSuccessWithStatus:@”注冊成功”];
}
else
[SVProgressHUD showErrorWithStatus:@”注冊失敗,請重試”];
}];
5.這個時候就是錯誤的效果,界面卡頓,資料操作實際是同步的。是以這個時候就需要開啟一個異步操作的線程。代碼如下
(1)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 耗時的操作
(2)
dispatch_async(dispatch_get_main_queue(), ^{
(3)
//處理ui效果
});
});
這3個地方具體怎麼跟上面的代碼搭配就不必我再繼續詳解了吧?