wait_fences: No se pudo recibir responden: 10004003 error - UIAlert SIN UITextField presente

StackOverflow https://stackoverflow.com/questions/4241894

  •  27-09-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una aplicación donde un UIAlert aparece la primera vez que el usuario comienza a utilizarlo para preguntar si quieren utilizar su ubicación actual. Esto sucede dentro del controlador principal. Sin embargo, me sale el siguiente error cuando se utiliza el UIAlert:

wait_fences: failed to receive reply: 10004003

Me depurado, y en Google alrededor. No estoy usando una entrada de área de texto o el teclado, así que no tengo que renunciar a un primer nivel de respuesta. Sin embargo, todavía no puedo entender por qué sería conseguir este error. Sólo aparece cuando agrego el UIAlert.

MainController.m

- (void)viewDidLoad {

    UIAlertView *mainAlert = [[UIAlertView alloc]
                      initWithTitle:@"Location" 
                      message:@"Do you wish to use your current location?" 
                      delegate:self 
                      cancelButtonTitle:nil 
                      otherButtonTitles:@"No Thanks", @"Sure!", nil];

    [mainAlert show];
    [mainAlert release];

    [super viewDidLoad];
}

El archivo de cabecera se construye de esta manera:

@interface MainController : UIViewController 
<CLLocationManagerDelegate,
 MKReverseGeocoderDelegate, UIAlertViewDelegate>
¿Fue útil?

Solución 2

Me solucionó este problema mediante la adición de un ligero retraso a la UIAlert: El abajo es dentro de mi viewDidLoad método (que también funciona bien dentro de ViewDidAppear ):

[self performSelector:@selector(testAlert) withObject:nil afterDelay:0.1];

por alguna razón que la demora hizo el truco. Entonces llamé a otro método (que se cambie su nombre por supuesto ..):

- (void) testAlert
{
    UIAlertView *mainAlert = [[UIAlertView alloc] initWithTitle:@"Location" message:@"Do you wish to use your current location?" delegate:self cancelButtonTitle:nil otherButtonTitles:@"No Thanks", @"Sure!", nil];

    [mainAlert show];
    [mainAlert release];
}

Otros consejos

La razón de esto wait_fences: failed to receive reply: también puede ser que intenta mostrar una alerta si bien no es en el mainThread (que es el hilo GUI).

El envío de la rosca GUI ayuda a:

dispatch_async(dispatch_get_main_queue(), ^{ 
  [mainAlert show];
});

Siempre llamada [super viewDidLoad]; antes de hacer cualquier otra cosa. Eso también es explicar por qué funciona la demora.

La esperanza que tengo razón. :)

Trate muestra la UIAlert en -viewDidAppear: (BOOL) animada. -viewDidLoad se llama cuando se carga la vista, pero antes de que sea en la pantalla.

He tenido un problema similar. Yo estaba añadiendo un observador en el viewDidLoad para una notificación de accesibilidad, que se iba a publicarse antes del ViewDidAppear había terminado.

Así que la ViewController estaba tratando de mostrar una UIAlertView antes de su propio punto de vista se ha elaborado completamente.

I trasladó la adición de observadores a la ViewDidAppear, y comenzó la startNotifier de accesibilidad en el ViewDidAppear. También la llamada a [súper viewDidAppear] se perdió a partir del código. Tanto estos problemas corregidos, la aplicación se hizo bien a trabajar de nuevo.

Si recibe este wait_fences: No se pudo recibir respuesta: 10004003 error una vez, puede que no sea capaz de presentar cualquier ViewControllers modales en la aplicación ulterior. Este fue el problema que tuve en mi aplicación. A veces, cuando se trata de un presente ViewController modal, la aplicación entraría en un bucle infinito.

Como dijo Alan, recordar siempre a "Intenta que muestra la UIAlert en -viewDidAppear:.. (BOOL) -viewDidLoad animada se llama cuando se carga la vista, pero antes de que sea en la pantalla"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top