Je suggère que toute action susceptible de bloquer l'interface utilisateur soit placée dans un thread. De cette façon, le processus d'ajout de la sous-vue se fera en arrière-plan, sans perturber le fil principal.
Vous pouvez soit faire cela par NSThread
ou vous pouvez implémenter le NSOperationQueue
.
La déclaration de NSThread est simple;
[NSThread detachNewThreadSelector:@selector(myFunction:) toTarget:myObject withObject:argumentObject];
Où myFunction »devrait être remplacé par le nom d'une fonction, le « myObject » avec un objet (ou simplement état self
si vous voulez que la classe actuelle pour gérer le fil) et « argumentObject » devraient être remplacé par tout objet que vous voulez transmettre en tant qu'argument; cela peut être nil
La fonction elle-même devrait ressembler à ceci;
-(void)myFunction {
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// do your thing here...
[pool release];
}
Chaque thread doit avoir un pool d'autorelease.
Un indice; Si votre sous-vue doit animer, essayez de déclarer un UIAnimation
bloc