PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
MacDev
[問題] Block 與 NSURLSESSION 的疑問
作者:
larry122
(larry122)
2017-07-09 01:26:47
目前想寫類似這樣的功能
[self callAPIWithCompletionHandler:^(NSString *strResponse) {
我以為會在這邊執行下方NSLUELSESSION完才繼續往下,所以在這邊寫了
if(xxx=xxx){
[self.navigation push xxx];
}
else{
self.navigation push.....
}
}
-(void)callAPIWithCompletionHandler : (void (^) (NSString * strResponse))
completionHandler
{
NSURLSessionTask *task = [session uploadTaskWithRequest:request
fromData:body completionHandler:^(NSData * _Nullable data, NSURLResponse *
_Nullable response, NSError * _Nullable error) {
// 這邊掠過
}];
[task resume];
}
但她都會先跑完 if(xxx=xxx){
[self.navigation push xxx];
}
else{
self.navigation push.....
}
之後等讀取完成後再跑一次,導致我同一頁推出去不止一次..
按上方返回後可以看到大概跑了2.3頁,請問是否我理解錯誤,在block內會先跑到底
等回傳後又再跑一次,還是我哪裡寫法有問題呢!?
作者:
benjenq
(Ben(憋))
2017-07-09 02:18:00
" target="_blank" rel="nofollow">
你的completionHandler(@"xx") 可能擺在[task resume]前
作者: ppppman (4pman)
2017-07-09 02:27:00
你的api在哪回應完成的?樓上寫很清楚囉
作者:
cryinglove
(毓™)
2017-07-09 09:50:00
nsurlsession的block不是馬上執行的,是要等到網路行為資料回來才會執行
作者:
larry122
(larry122)
2017-07-09 10:14:00
我的需要等NSURLSESSION 回傳才去做 if else 的判斷我該怎做才能讓他等待NSURLSESSION執行完成後才往下做呢
作者:
Esvent
(Esvent)
2017-07-09 10:18:00
在task的block裡面呼叫你自己的block即可
作者:
larry122
(larry122)
2017-07-09 11:04:00
好像懂了 ! 我好像搞反了那假如我是要 NSString *xxx=[self.completionHandler];if(xxx isqqualtostring ooo)我應該把if 移動到completionHandler 內這邊?我好像又混亂了 ORZ 我想一下
作者:
yuanruo
(罪を憎んで人を憎まず)
2017-07-09 16:21:00
外層block callback 移到session 完成後回調出去
繼續閱讀
[問題] 推薦的網路「限速」Mac軟體?
dengwong
[問題] .hasPrefix??
wagon
[問題] APNs & P8
areyo
[問題] 請問有關UseProtocolCachePolicy
fightword
[問題] App Review Rejected
futile
[問題] 更改xcode初始畫面
llauoykcuf
Re: [問題] 如何寫像TableViewDatasource的delegate?
benjenq
保持APP登入的做法
oneno
[討論] 關於iOS逆向工程的書
helloo
[問題] 如何寫像TableViewDatasource的delegate?
iphone7pro
Links
booklink
Contact Us: admin [ a t ] ucptt.com