2

私は、完全にブロックで書かれている 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 呼び出しは内部的にバックグラウンド スレッドで行われます。

元のクラスに渡される匿名クラスで同様のことを行うことができ、結果を処理するために何らかのメソッドにディスパッチできます。より良い方法はありますか?

4

1 に答える 1

0

パターンデリゲート http://en.wikipedia.org/wiki/Delegation_patternを使用できます。一部のメソッドを採用するデリゲート オブジェクトを渡します。そして、いくつかの結果を取得した後、結果値でこのメソッドを呼び出します。

于 2014-07-10T09:06:42.120 に答える