objective c - ejemplos - runModalForWindow acelera las solicitudes http
post javascript (3)
Tengo conexión a la url, que normalmente funciona bien
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:delegate];
Pero cuando creo una ventana modal, ninguna solicitud recibe respuesta alguna vez:
[NSApp runModalForWindow:window];
Si comento esta línea, creando así una ventana ''estándar'', todo funciona.
Intenté implementar todos los métodos de NSURLConnectionDelegate, ninguno de ellos llamado.
Sospecho que esto es algo sobre ''ejecutar bucles'', pero tienen poca experiencia en esta área. ¿Alguien tiene experiencia en esto?
Gracias
No me he topado con la situación que está teniendo, pero sugiero que se genere y se inicie una conexión en el hilo de fondo.
Si tiene como objetivo 10.5+, puede indicarle a NSURLConnection
que también se ejecute en NSModalPanelRunLoopMode
(el modo en que NSModalPanelRunLoopMode
el NSModalPanelRunLoopMode
su hilo actual al presentar una vista modal) a través de
-(void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode
donde aRunLoop
probablemente sería [NSRunLoop currentRunLoop]
y el mode
sería NSModalPanelRunLoopMode
. Más información en NSURLConnection
doc .
Si está soportando sistemas operativos anteriores, es posible que tenga que ser creativo (es decir, con multihilo). Buena discusión de este tema antes de 10.5 aquí .
También encontré el mismo problema que no llamó al método de delegado cuando se usa NSURLConnection en una ventana modal.
después de alguna investigación, el siguiente código lo resuelve.
NSURLConnection* conn = [[NSURLConnection alloc] initWithRequest:requst delegate:self startImmediately:NO];
[conn scheduleRunLoop:[NSRunLoop currentLoop] forMode:NSModalPanelRunLoopMode];
[conn start];
Sin embargo, cuando se llama a connectionDidFinishLoading, [NSApp stopModal] no funciona, necesita llamar a [NSApp abortModal] en su lugar.