自 return 首次执行以来,如何 return 从块中获取对象?

how to return the object get from the block since the return is first executed?

我想从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是先执行,然后触发成功

如何获取更新后的值?

在成功的情况下,调用处理 returned 版本的东西。或者同步调用命名不当的 GET:parameters:progress:success:failure: 方法。

即在成功块中,执行:

 dispatch_async(... get main queue ..., ^{
     [self dealWithVersions:ver];
 });

并使 -versionOnLine return (void).