这只有当上述项目已在此应用程序的运行产生反应。如果先前创建了条目,它会很好地获取图像。后台线程返回的UIImage的结果作为零
此代码的工作,而无需使用后台线程精细,所以它使我相信这是问题的一部分。下面的代码我有:
NSMutableDictionary *thumbnails = [[NSMutableDictionary alloc] init];
dispatch_queue_t thumbnailSetupQueue = dispatch_queue_create("com.App.SetupTimelineThumbnails", NULL);
dispatch_async(cellSetupQueue, ^{
NSManagedObjectContext *newMoc = [[NSManagedObjectContext alloc] init];
NSPersistentStoreCoordinator *coordinator = [NSManagedObjectContext contextForCurrentThread].persistentStoreCoordinator;
[newMoc setPersistentStoreCoordinator:coordinator];
NSNotificationCenter *notify = [NSNotificationCenter defaultCenter];
[notify addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:newMoc];
Media *media = [localEntry.media anyObject];
UIImage *image = [media getThumbnail];
NSLog(@"image: %@", image);
[[NSNotificationCenter defaultCenter] removeObserver:self];
});
dispatch_release(cellSetupQueue);
然后
-(UIImage *)getThumbnail {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"%@-%@.jpg",
self.mediaID,
THUMBNAIL_FILENAME]];
UIImage *thumbnail = [UIImage imageWithContentsOfFile:fullPath];
NSLog(@"correct size thumbnail: %@", correctSizeThumbnail);
return correctSizeThumbnail;
}
的的NSLog在getThumbnailWithSave返回作为一个UIImage,其他的NSLog返回作为零。
'GET'不应该被用作此类型的方法前缀.... – bbum 2012-08-02 17:58:23
你的问题中有太多的代码。如果您将问题归结为重要的领域,那么我们就可以更容易地找出问题所在。如果我不得不猜测,我会说这是因为图像还没有被创建,或者当后台线程尝试访问它时已经被释放。 – Dustin 2012-08-02 18:05:46
@Dustin我现在已经削减了一点。如果这可能是问题,我该如何阻止图像被释放?你的意思是什么没有被创造出来?我向你展示了上面创建的所有元素。 – Andrew 2012-08-02 18:12:56