У меня есть поток (в частности, NSOperation), который запускается для загрузки некоторых изображений для меня для просмотра с прокруткой, когда мой основной вид запрашивает их.Любое количество этих операций NSO может быть поставлено в очередь одновременно.Таким образом, он идет с заданным мной путем к файлу, загружает изображение с диска (как UIImages), а затем отправляет объект обратно в мой mainview с помощью executeSelectorOnMainThread: и передает моему mainview NSDictionary объекта и значение ID изображения.Мой основной вид затем должен вставить объект изображения и строку идентификатора изображения в NSMutableDictionary, который он имеет для основного вида, чтобы иметь возможность использовать.Я проверил, что NSMutableDictionary правильно выделен и инициализирован, но когда метод, вызываемый NSOperation, пытается добавить объекты в словарь, ничего не происходит.Я проверил, что объект и строка, которые я получаю из словаря, который отправил мне поток, не равны нулю или что-то еще, но все же это не работает.Я не делаю что-то правильно или использую плохую технику?Что бы кто-нибудь посоветовал сделать в такой ситуации, когда мне нужно добавить UIImages в NSMutableDictionary из потока?Большое спасибо!
Вот код NSOperation, который я использую:
- (void)main {
NSString *filePath = [applicaitonAPI getFilePathForCachedImageWithID:imageID andSize:imageSize];
UIImage *returnImage = [[UIImage alloc] initWithContentsOfFile:filePath];
if (returnImage) {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:2];
[dict setObject:returnImage forKey:@"IMAGE"];
[dict setValue:[NSString stringWithFormat:@"%d", imageID] forKey:@"IMAGE_ID"];
NSDictionary *returnDict = [[NSDictionary alloc] initWithDictionary:dict];
[dict release];
[mainViewController performSelectorOnMainThread:@selector(imageLoaderLoadedImage:) withObject:returnDict waitUntilDone:NO];
[returnDict release];
}
}
А вот метод в главном потоке:
- (void)imageLoaderLoadedImage:(NSDictionary *)dict {
UIImage *loadedImage = [dict objectForKey:@"IMAGE"];
NSString *loadedImage = [dict valueForKey:@"IMAGE_ID"];
[imagesInMemoryDictionary setObject:loadedImage forKey:loadedImageID];
[self drawItemsToScrollView];
}