2010-09-10 76 views
0

我有一個封面流,它有3個不同的圖像集。其中一個需要生成,我一直在試圖讓它填充一個線程,用於更大的圖像選擇。NSThread被稱爲第二次(在第一次沒有完成後)得到「EXC_BAD_ACCESS」

這裏有點我的代碼:

- (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。

我試圖分配線程,但它只能工作一次以及..如果我讓它加載並且不要試圖阻止它,它的工作很好。

任何幫助wuld是偉大的,謝謝!

+0

你會得到什麼錯誤的訪問錯誤? – 2010-09-10 01:30:48

+0

每次都有所不同,具體取決於何時切換並嘗試停止線程。 – 2010-09-10 15:38:05

回答

0

這不是一個完整的答案。但是我決定改變我的遊戲計劃,關於我如何使用線程。

基本上我用一個線程創建了一個新的空類來生成大拇指。當我填充封面流時,我檢查線程類是否構建了一個圖像。這似乎工作到目前爲止,我會繼續調整它,直到它的超級順利!

謝謝

+0

嗯,仍然有問題。當我需要執行以下代碼行時,它似乎失敗:[thisPage.layer renderInContext:ctx]; – 2010-09-10 21:07:31

相關問題