2010-04-15 3 views
0

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

[self.delegate performSelectorOnMainThread:@selector(operationDidFinish:) withObject:self waitUntilDone:YES]; 

способ. Его нужно вызвать в основном потоке, потому что UIKit не является потокобезопасным, и в документации говорится об этом в этих случаях, не связанных с потоками. В методе делегата я рисую pdf или изображение, но поскольку он нарисован на основном потоке, пользовательский интерфейс очень отстает, пока чертеж не будет закончен. Возможно, вы можете предложить мне хороший способ избежать этой проблемы?

ответ

1

Я предполагаю, что вы загружаете данные изображения, декодируете его и визуализируете. Последний бит, рендер, должен произойти в основном потоке. Можете ли вы переместить часть декодирования в поток загрузки? Например, используйте вызовы CGImage для декодирования png или jpeg, поэтому у вас есть CGImageRef, готовый к использованию перед вызовом операцииDidFinish. Если вы можете работать с PDF как изображения, лучше было бы преобразовать его, чем декодировать его в основном потоке.

+0

Хорошо, я попробую. –

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