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,并等待从 webview 调用 javascript,因此我很好奇这是否也可以在 Class 方法中执行?因为在类方法中,每当我分配一个委托时,它都会产生一个我无法将其分配给 self.

谢谢。

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

因为在类方法中,每当我分配一个委托时,它都会产生一个我无法将其分配给 self.

只是一个快速的想法。为什么不编写一个新类并将其对象分配为委托而不是自我?

于 2012-11-26T19:12:29.327 回答