type ejemplos data con objective-c cocoa modal-dialog runloop

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.