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
http://i.imgur.com/8xNlxZ4.png
你的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