¿Dónde vive un UIAlertView mientras no se descarta?

¿Alguien sabe en qué subvista se encuentra un UIAlertView activo o cómo encontrar el hilo en el que se está ejecutando?

Si descarga los contenidos de la propiedad de Windows y todas las subvistas de todas las vistas, puede ver que UIAlertView se encuentra en una ventana separada que se superpone a la ventana principal. Aquí tengo una barra de navegación con un viewcontroller y una tabla vista (eliminé sus subvistas porque no son relevantes).

> : > : | > : | : > : | : | > : | > : | : > : | : > <_uialertoverlaywindow: 0x4179b70; frame = (0 0; 320 480); opaque = NO; layer = > : ; opacity=; }; layer = > : | > : | > : | > 

Aquí está el código que produce el volcado. Encontré útil en ocasiones para ver qué sucede cuando algo no está haciendo lo que esperaba:

 void dumpView(UIView* aView, NSString* indent) { if (aView) { NSLog(@"%@%@", indent, aView); // dump this view if (aView.subviews.count > 0) { NSString* subIndent = [[NSString alloc] initWithFormat:@"%@%@", indent, ([indent length]/2)%2==0 ? @"| " : @": "]; for (UIView* aSubview in aView.subviews) dumpView( aSubview, subIndent ); [subIndent release]; } } } void dumpWindows() { for (UIWindow* window in [UIApplication sharedApplication].windows) { dumpView(window, @"dumpView: "); } } 

El UIAlertView activo vive en una ventana separada (_UIAlertOverlayWindow). Usa la propiedad .windows para encontrarlo.

Toda la interfaz de usuario se ejecuta en el hilo principal.

A partir del problema que describes con Windows y el momento, parece que deberías implementar alertView: didDismissWithButtonIndex:. Puede activar su código de seguimiento desde ese método.

EDITAR: si eso no funcionaba, trataría de hacer un retraso para ejecutar el material de FB después de un retraso cuando la ventana realmente está garantizada para desaparecer.