0

基本的に、ディスパッチメカニズムのようにWebサービス呼び出しを呼び出すために呼び出すクラスメソッドがあり、応答を取得したら、NSDictionaryで同期モードで応答を送信します。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{

    NSDictionary *_pD= [HttpRequest Details:@"Type" :@"guest" :[Description valueForKey:@"number"]];

    dispatch_sync(dispatch_get_main_queue(), ^{

        DLog(@"%@",[_D description]);
        [self mapObjects:_D];

    });
});

ただし、この呼び出しでは WebView も呼び出す必要があり、javascript が webview から呼び出されるのを待つ必要があるため、Class メソッドでもそれが可能かどうかに興味がありますか? クラスメソッドでは、デリゲートを割り当てるたびに、それを自分自身に割り当てることができないというエラーが生成されます。

ありがとう。

4

2 に答える 2

0

クラスの静的インスタンスをデリゲートにして、そこからすべてを処理することができます。UIWebViewDelegateまた、.hでプロトコルを設定することを忘れないでください

+ (YourClass *)getInstance {
    static YourClass *instance = nil;
    if (!instance) {
        instance = [YourClass new];
    }
    return instance;
}

- (void)callWebService {
    ... do your thing
}

次のように呼び出します。

[[YourClass getInstance] callWebService];

getInstanceメソッドにこだわりたい場合、それを行う適切な方法は次のとおりです(奇妙なコードと混同したくありませんでした)。

+ (YourClass *)getInstance {
    static dispatch_once_t pred;
    static YourClass *instance = nil;

    dispatch_once(&pred, ^{
        instance = [[[self class] alloc] init];
    });

    return instance;
}
于 2012-11-26T19:10:05.660 に答える
0

クラスメソッドでは、デリゲートを割り当てるたびに、それを自分自身に割り当てることができないというエラーが生成されます。

ちょっと考えただけです。新しいクラスを作成し、そのオブジェクトを自分ではなくデリゲートとして割り当ててみませんか?

于 2012-11-26T19:12:29.327 に答える