<分区>
标签 ios objective-c macos block
<分区>
我想从url中获取版本,所以我这样写:
- (NSInteger)versionOnLine {
__block NSInteger ver = 0;
NSString *urlStr = [ServerURL stringByAppendingString:@"version.json"];
[[TXYManager sharedInstance] GET:urlStr
parameters:nil
progress:^(float progess) {
NSLog(@"progess is %f",progess);
} success:^(id responseObject) {
NSLog(@"download version file successfully");
if (!responseObject) {
return ;
}
ver = [[responseObject objectForKey:@"version"] integerValue];
NSLog(@"version : %ld",(long)ver);
} failure:^(NSError *error) {
NSLog(@"%@",error);
}];
return ver;
}
但是return是先执行,然后触发成功。
如何获取更新后的值?
最佳答案
在成功的情况下,调用一些处理返回版本的东西。或者同步调用命名不当的 GET:parameters:progress:success:failure:
方法。
即在成功 block 中,执行:
dispatch_async(... get main queue ..., ^{
[self dealWithVersions:ver];
});
并使 -versionOnLine
返回 (void)
。
关于ios - 自返回首次执行以来,如何返回从 block 中获取的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169219/