NSOperation и UIKit проблема - PullRequest
0 голосов
/ 15 апреля 2010

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

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

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

1 Ответ

1 голос
/ 15 апреля 2010

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

...