4

我有 url 连接,通常工作正常

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                              delegate:delegate];

但是当我创建一个模式窗口时,没有任何请求收到响应:

[NSApp runModalForWindow:window];

如果我将此行注释掉,从而创建一个“标准”窗口,那么一切正常。

我尝试实现来自 NSURLConnectionDelegate 的所有方法,而不是其中一个被调用。

我怀疑这与“运行循环”有关,但在这方面的经验很少。有人有这方面的经验吗?

谢谢

4

3 回答 3

8

如果您的目标是 10.5+,您NSURLConnection可以NSModalPanelRunLoopMode通过

-(void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode

aRunLoop可能在哪里,在[NSRunLoop currentRunLoop]哪里。文档中的更多信息。modeNSModalPanelRunLoopModeNSURLConnection

如果您支持早期的操作系统,您可能需要发挥创造力(即使用多线程)。在这里10.5 之前很好地讨论了这个问题。

于 2011-02-14T07:23:18.783 回答
1

我没有遇到您遇到的情况,但我建议在后台线程中生成并启动连接。

于 2011-02-14T06:59:40.533 回答
1

我也遇到了在模态窗口中使用 NSURLConnection 时没有调用委托方法的问题。

经过一番调查,下面的代码解决了它。

NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest:requst delegate:self startImmediately:NO];
[conn scheduleRunLoop:[NSRunLoop currentLoop] forMode:NSModalPanelRunLoopMode];
[conn start];

但是,当调用 connectionDidFinishLoading 时,[NSApp stopModal] 不起作用,需要调用 [NSApp abortModal] 来代替。

于 2011-04-24T05:17:01.810 回答