我有一个线程(特别是一个 NSOperation),当我的主视图要求它们时,它运行为我加载一些图像以用于滚动视图。任何数量的这些 NSOperations 都可以一次排队。所以它与我给它的文件路径一起使用并从磁盘加载图像(作为 UIImages),然后通过使用 performSelectorOnMainThread 将对象发送回我的主视图:并向我的主视图传递对象的 NSDictionary 和图像 ID 值。然后,我的主视图应该将图像对象和图像 ID 字符串插入到 NSMutableDictionary 中,以便主视图能够使用。我已经验证了 NSMutableDictionary 的分配和初始化很好,但是当 NSOperation 调用的方法尝试将对象添加到字典中时,什么也没有发生。我' 已经验证了我从线程发送给我的字典中得到的对象和字符串不是 null 或任何东西,但它不起作用。我是不是在做正确的事情或使用了不好的技术?在我需要从线程将 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];
}