将objective-c面向块的api转换为android

Posted

技术标签:

【中文标题】将objective-c面向块的api转换为android【英文标题】:converting objective-c block-oriented api to android 【发布时间】:2012-12-16 21:20:30 【问题描述】:

我的任务是将我们在 ios 中的 Web 服务层(完全用块编写)转换为 android 中类似的东西。由于 Java 还没有闭包,什么是合理的方法?

示例 api 调用:

if (![data.locationsAPI cityNamesForCity:self.searchBox.text
                              onSuccess:^(JSONRef * ref)
     
         locations = [[ref valueForKey:@"cities"]arrayCopy];
         [self.searchTable reloadData];
         [self.hotelTable reloadData];

      onFailure:^(IOError * error)
     
         locations = nil;
         [self.searchTable reloadData];
     ])

    [self notReachableAlert];

成功/失败块在主线程上调用,而内部的 api 调用在后台线程中。

我可以对匿名类做类似的事情,该类将被传递给原始类,然后可以分派给某个方法来处理结果。有没有更好的办法?

【问题讨论】:

【参考方案1】:

您可以使用 模式委托 http://en.wikipedia.org/wiki/Delegation_pattern。传递采用某些方法的委托对象。在得到一些结果后,用结果值调用这个方法。

【讨论】:

以上是关于将objective-c面向块的api转换为android的主要内容,如果未能解决你的问题,请参考以下文章

如何在基于块的 API 方法中使用非空和可为空的 Objective-C 关键字

将 Java 转换为 Objective-C:异常处理

Objective-C:如何将 NSIndexSet 转换为 NSIndexPath

如何将 Objective-C 的完成块转换为 Swift?

将 Objective-C 中的函数转换为 swift

将 Objective-C 方法转换为 Swift [关闭]