runModalForWindow限制http请求

Nik*_*bak 4 cocoa modal-dialog objective-c runloop

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

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                              delegate:delegate];
Run Code Online (Sandbox Code Playgroud)

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

[NSApp runModalForWindow:window];
Run Code Online (Sandbox Code Playgroud)

如果我评论这一行,从而创建一个"标准"窗口,一切正常.

我尝试从NSURLConnectionDelegate实现所有方法,而不是调用它们中的一个.

我怀疑这是关于'run loops'的事情,但是在这方面没什么经验.有没有人有这方面的经验?

谢谢

Sam*_*Sam 8

如果您的目标是10.5+,那么您可以告诉NSURLConnection它还可以运行NSModalPanelRunLoopMode(当前线程的runloop模式在呈现模态视图的同时)

-(void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode
Run Code Online (Sandbox Code Playgroud)

aRunLoop可能会在哪里[NSRunLoop currentRunLoop]mode将来NSModalPanelRunLoopMode.更多信息在NSURLConnection文档中.

如果您支持早期操作系统,则可能必须具有创造性(即使用多线程).这里 10.5之前很好地讨论了这个问题.