Я предлагаю, чтобы любое действие, которое могло повредить пользовательский интерфейс, было помещено в поток. Таким образом, процесс добавления подпредставления будет выполняться в фоновом режиме, не нарушая основной поток.
Вы можете сделать это либо NSThread
, либо реализовать NSOperationQueue
.
Декларация NSThread проста;
[NSThread detachNewThreadSelector:@selector(myFunction:) toTarget:myObject withObject:argumentObject];
Где «myFunction» следует заменить именем функции, «myObject» - с объектом (или просто указать self
, если вы хотите, чтобы текущий класс обрабатывал поток), а «argumentsObject» следует заменить на любой объект, который вы хотите передать в качестве аргумента; это может быть nil
Сама функция должна выглядеть так:
-(void)myFunction {
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// do your thing here...
[pool release];
}
Каждый поток должен иметь пул автоматического выпуска.
Один намек; если ваше подпредставление должно анимироваться, попробуйте объявить UIAnimation
block