2010-03-31 6 views
1

Je reçois un "EXC_BAD_ACCESS" mais je n'arrive pas à comprendre pourquoi, toute aide serait massive - merci d'avance.Problème d'objet partagé NSThread

L'utilisateur prend une photo et je veux faire un peu de traitement sur elle dans un autre thread ...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 

... 

NSString *uid = [Asset stringWithUUID]; 

[_imageQueue setObject:img forKey:uid]; 

[NSThread detachNewThreadSelector:@selector(createAssetAsyncWithImage:) 
       toTarget:self 
       withObject:uid]; 
} 

Ensuite, le nouveau fil

-(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]; 
} 

qui appelle

+(Asset *)createAssetWithImage:(UIImage *)img 
    { 
    .... 

    UIImage *masterImg = [GraphicSupport createThumbnailFromImage:img pixels:img.size.height/2]; 
    .... 

    return newAsset; 
    } 

Et puis c'est où je continue à obtenir le 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(); 
} 

l'image de ce qui me donne toutes les plaintes ...

Qu'est-ce que je fais mal ??

Un grand merci à l'avance

+1

En createThumbnailFromImage, ne devrait pas être l'image inImage? – DyingCactus

Répondre