Я создаю многопоточное приложение для iPad.У меня есть этот класс, который извлекает кадры из фрагмента ролика, и у меня есть UIScrollView, чтобы показать вещи, которые я извлек.Средство извлечения кадров работает в другом потоке, и я хочу начать сборку прокрутки только после того, как извлеку определенное количество кадров.Поэтому я создал это свойство BOOL, называемое буферизацией, которое я обновляю через поток.Мой контроллер вида наблюдает это свойство и только после того, как это свойство равно NO, я начинаю строить ScrollView.
Проблема в том, что я не вижу никаких изменений в графическом интерфейсе после вызова метода построения.Я вижу вид прокрутки только после касания экрана
Вот что я делаю:
Чтобы создать тему:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
* 1011код, запущенный в потоке:
-(void) startReadingWithTimeRange:(STimeRange *) timeRange;
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
//setting the time range for reading the file
[assetReader setTimeRange:timeRange.timeRange];
//start reading
[assetReader startReading];
//declearing about the buffer
CMSampleBufferRef buffer;
int z = 0;
while ( [assetReader status]==AVAssetReaderStatusReading)
{
z++;
//reading buffer
buffer = [assetReaderTrackOutput copyNextSampleBuffer];
if (buffer == NULL) break;
//converting the buffer to UIImage
UIImage *frameImage = imageFromSampleBuffer(buffer);
CMTime time = CMSampleBufferGetOutputPresentationTimeStamp(buffer);
NSLog(@"###duration %lld",time.value/time.timescale);
SFrame *frame = [[SFrame alloc] initWithImage:frameImage andTime:time];
//add it to the frame array
[framesArray addObject:frame];
[frame release];
//check if buffer is not null and needed release
//release the buffer
CFRelease(buffer);
if ([framesArray count] > 100 && self.buffering) {
[self willChangeValueForKey:@"buffering"];
self.buffering = NO;
[self didChangeValueForKey:@"buffering"];
}
}
[pool release];
}
Я действительно не знаю, я очень признателен за любую помощь