Pregunta

I tiene una aplicación UITabBar con dos puntos de vista que carga grandes cantidades de datos de la web en sus métodos "viewWillAppear". Quiero mostrar una barra de progreso o un indicador de la actividad, mientras que estos datos se recupera, para asegurarse de que el usuario conoce la aplicación no está congelado.

Soy consciente de que esto se ha hecho antes. Simplemente necesito una aclaración sobre lo que parece ser una buena solución en lugar .

He implimented el código en el ejemplo. autor de la pregunta original de la pregunta posterior resuelve su problema, poniendo la recuperación de datos en otro "hilo". Entiendo el concepto de hilos, pero no sabía cómo iba a impliment esto.

Con la investigación, he descubierto que tengo que mover toda mi recuperación de datos pesada en un subproceso en segundo plano, como todos los de la actualización de interfaz de usuario se produce en el hilo principal.

Si uno sería tan amable de proporcionar un ejemplo para mí, estaría muy agradecido. Puedo proporcionar partes de mi código existente como sea necesario.

¿Fue útil?

Solución

Si utiliza NSURLConnection que se ejecuta en otro hilo automáticamente.

en su viewDidLoad:

NSURLRequest *req = [NSURLRequest requestWithURL:theURL];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self];

entonces necesita algunos métodos personalizados. Si escribe en -connection y pulse Esc puedes encontrar los diferentes métodos que puede utilizar. Hay tres que tendrá con esto:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    // this is called when there is a response
        // if you're collecting data init your NSMutableData here
}

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // each time the connection downloads a 
        // packet of data it gets send here
        // so you can do [myData appendData:data];
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
        // the connection has finished so you can 
        // do what you want with the data here
}

Eso es básicamente todo lo que hay que hacer. NSURLConnection maneja todo el multithreading sí mismo y no tiene que preocuparse. Ahora usted puede crear un indicador de actividad y lo mostrará y funcionará porque el hilo principal está vacía. :)

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