2015-06-29 4 views
0

Я рисую сложный вид в своей фоновой очереди, а затем добавляю его в качестве подсмотра в виде содержимого содержимого коллекции, но на это требуется всегда.NSOperationQueue берет навсегда, чтобы добавить subview

Вот мой код:

[self.drawingOperationQue addOperationWithBlock:^{ 

    ObservationViewSmall *observationSmall = [[ObservationViewSmall alloc] initWithFrame:CGRectMake(0, 0, 408, 332)]; 
    [observationSmall initViewWithObservation:[self.childObservationArray objectAtIndex:indexPath.row]]; 
    cell.userInteractionEnabled = YES; 

    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     [cell.contentView addSubview:observationSmall]; 

    }]; 

}]; 

Любая помощь более чем приветствуется.

+0

Это _queue_. :) – akashivskyy

+0

Обратите внимание, что в основном элементы UIKit не являются потокобезопасными. Кажется, вы создаете подкласс UIView в фоновой очереди, я не думаю, что вы можете это сделать. Конечно, вы можете использовать фоновый поток, используя графический контекст. – Andrea

ответ

0

Ссылаясь на этот ответ: https://stackoverflow.com/a/11123184/190599

Вы создаете свой взгляд от главной темы.

Ниже будет создать представление на главной теме:

[self.drawingOperationQue addOperationWithBlock:^{ 

    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     ObservationViewSmall *observationSmall = [[ObservationViewSmall alloc] initWithFrame:CGRectMake(0, 0, 408, 332)]; 
     [observationSmall initViewWithObservation:[self.childObservationArray objectAtIndex:indexPath.row]]; 
     cell.userInteractionEnabled = YES; 
     [cell.contentView addSubview:observationSmall]; 
    }]; 

}]; 
+0

это не идея? создайте свой вид (нарисуйте их) в backgorund, затем добавьте их в основной поток? Я также пробовал это, но затем он блокирует пользовательский интерфейс. Прокрутка просмотра коллекции становится неустойчивой. –

+0

@JunaidAhmed. Изначальное представление и добавление его в качестве подчиненного объекта должно происходить на главном представлении, дополнительная работа, которую вы выполняете в двух вызовах init, выполняемых на ObservationViewSmall, вам нужно отделить и отключить из основного потока. – CodeReaper

+0

@CodeReaper, почему вы использовали addOperationWithBlock внутри addOperationWithBlock? это не имеет смысла в этом контексте – Doro

Смежные вопросы