NSThread вызывается второй раз (после того, как первый не закончил) получить "EXC_BAD_ACCESS" - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть поток обложек, и у него есть 3 разных набора изображений.Один из них должен быть сгенерирован, и я пытаюсь заполнить его потоком для больших выборок изображений.

Вот немного моего кода:

- (void) startSongThread {
    [NSThread detachNewThreadSelector:@selector(songThreadMain) toTarget:self withObject:nil];   
}

- (void) songThreadMain {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    int i = 0;

    while(i < [items count] && ![[NSThread currentThread] isCancelled]) {

        NSNumber *nsInt = [NSNumber numberWithInt:i];
        if(![addedSongIndexes containsObject:nsInt]) [self setSongImage:nsInt];
        i++;

    }

    [pool release];

}

- (void) stopSongThread {
    if(![[NSThread currentThread] isCancelled]) [[NSThread currentThread] cancel];    
}

StopSongThreadметод вызывается, когда изображения меняются от одного типа к другому.

Если я загружаю все основные изображения, переключаю наборы изображений, затем переключаюсь на основной набор, я всегда получаю EXC_BAD_ACCESS.

Я пыталсявыделить поток, но он работает только один раз. Если я позволю ему загрузиться и не буду пытаться остановить его, он будет отлично работать.

Любая помощь будет отличной, спасибо!

1 Ответ

0 голосов
/ 10 сентября 2010

Это не полный ответ.Но я решил немного поменять план игры на то, как я использовал поток.

По сути, я создал новый пустой класс с потоком, чтобы генерировать превью.Когда я заполняю поток покрытия, я проверяю, создал ли класс потока изображение.Кажется, до сих пор это работает, я буду продолжать настраивать его, пока он не станет супер плавным!

Спасибо

...