私は、完全にブロックで書かれている 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 呼び出しは内部的にバックグラウンド スレッドで行われます。
元のクラスに渡される匿名クラスで同様のことを行うことができ、結果を処理するために何らかのメソッドにディスパッチできます。より良い方法はありますか?