1
我有一個SSCollectionView是在NSCollectionView和UITableView之後建模的。它調用一個函數來加載indexPath中的每個項目。iPhone SDK SSCollectionView從線程加載項目
我想將圖像異步加載到這些路徑的每一箇中。
- (SSCollectionViewItem *)collectionView:(SSCollectionView *)aCollectionView itemForIndexPath:(NSIndexPath *)indexPath {
....
[self startLoadingItem:item indexPath:indexPath];
return item;
}
-(void)startLoadingItem:(SSCollectionViewItem *)collectionViewItem indexPath:(NSIndexPath *)indexPath
{
[SEThreadInvocation detachNewThreadSelector:@selector(loadItem:indexPath:) toTarget:self withObjects:collectionViewItem,indexPath, nil];
}
SEThreadInvocation只是NSThread的一個子類,所以我可以發送多個對象給選擇器。
-(void)loadItem:(SSCollectionViewItem *)collectionViewItem indexPath:(NSIndexPath *)indexPath {
...
collectionViewItem.imageView.image = imageToDisplay;
}
正在發生的事情是,代碼開始工作,但每次採集重裝時間(通常)它把圖像遍佈隨機集合視圖。
我相信這是因爲我的SSCollectionViewItem每次都指向一個不同的內存位置,而且我的項目不是線程安全的,所以當它們在內存中更改時,它只是將我的圖像蓋印在整個位置。
此外,我認爲它可能會取代內存中的圖像,所以我用數字替換了它,並在重新加載時將數字反射到集合視圖中。
如何在這種情況下讓我的對象線程安全?
您確定它是SSCollectionView嗎?或者你的意思是NSCollectionView? – 2011-04-22 22:36:44
它是來自SS Toolkit的SSCollectionView。儘管它是在NSCollectionView之後建模的。 – 2011-04-24 00:53:35