2010-03-31 133 views
1

我得到一个“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(); 
} 

它的形象,是给我所有的投诉...

我在做什么错?

很多感谢

+1

在createThumbnailFromImage,不应图像是inImage? – DyingCactus 2010-03-31 18:29:32

回答