iPhone SDK SSCollectionПросмотреть элемент из потока - PullRequest
1 голос
/ 23 апреля 2011

У меня есть SSCollectionView, который смоделирован после NSCollectionView и UITableView.Он вызывает функцию для загрузки каждого элемента по indexPath.

Я хочу асинхронно загружать изображения в каждый из этих путей.

- (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 каждый раз указывает на другое место в памяти, а мой элемент не является потокобезопасным, поэтому он просто печатает мои изображения повсюду, когда они изменяются в памяти.

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

Как я могу сделать свои объекты безопасными для потока в этомконтекст?

1 Ответ

1 голос
/ 22 июня 2011

SSToolkit имеет пример проекта каталога, который имеет демонстрацию SSCollectionView.Он загружает изображения так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...