NSThread共享对象问题
问题描述:
我得到一个“EXC_BAD_ACCESS”,但只是不能解决为什么,任何帮助将是巨大的 - 预先感谢您。NSThread共享对象问题
的用户拍照时,我想要做一些处理就可以在另一个线程...
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
...
NSString *uid = [Asset stringWithUUID];
[_imageQueue setObject:img forKey:uid];
[NSThread detachNewThreadSelector:@selector(createAssetAsyncWithImage:)
toTarget:self
withObject:uid];
}
然后新线程
-(void) createAssetAsyncWithImage:(NSString *)uid {
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];
if ([_imageQueue objectForKey:uid]) {
Asset *asset = [Asset createAssetWithImage:[_imageQueue objectForKey:uid]];
asset.uid = uid;
[self performSelectorOnMainThread:@selector(asyncAssetCreated:)
withObject:asset
waitUntilDone:YES];
}
[pool release];
}
其中要求
+(Asset *)createAssetWithImage:(UIImage *)img
{
....
UIImage *masterImg = [GraphicSupport createThumbnailFromImage:img pixels:img.size.height/2];
....
return newAsset;
}
然后这是我不断得到的BAD_ACCESS
+(UIImage *)createThumbnailFromImage:(UIImage *)inImage pixels:(float)pixels{
CGSize size = image.size;
CGFloat ratio = 0;
if (size.width > size.height) {
ratio = pixels/size.width;
}
else {
ratio = pixels/size.height;
}
CGRect rect = CGRectMake(0.0, 0.0, ratio * size.width, ratio * size.height);
UIGraphicsBeginImageContext(rect.size);
//NSAssert(image,@"image NULL");
[image drawInRect:rect];
return UIGraphicsGetImageFromCurrentImageContext();
}
它的形象,是给我所有的投诉...
我在做什么错?
很多感谢
答
我发现UIGraphicsBeginImageContext是不是多线程化和不得不求助于Trevors晶圆厂扩展的UIImage。
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
在createThumbnailFromImage,不应图像是inImage? – DyingCactus 2010-03-31 18:29:32