2010-10-01 3 views
0

Voici un extrait de mon code:UIImage CGImage: message envoyé à l'instance désallouées

dans le fichier .h:

@property (nonatomic, retain) UIImage *photo; 
@property (nonatomic, retain) NSData *photoData; 

dans le fichier .m:

@synthesize photo; 
@synthesize photoData; 
... 
photo = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; {*} 
... 

NSLog(@"b1"); 
self.photoData = UIImagePNGRepresentation(self.photo); 
NSLog(@"b2"); 

ici sont les journaux que je vois dans la console:

b1 
*** -[UIImage CGImage]: message sent to deallocated instance 0x583b1d0 

Comment puis-je empêcher ce problème "message envoyé à l'instance libérée"? Je suis très nouveau à ce sujet, donc j'apprécierais vraiment un peu de contexte pourquoi cela se produit? (Un pointeur sur quelques docs serait génial aussi)

Merci

MISE À JOUR: * L'erreur se produit ici. Merci à codelark pour le signaler. Si cette ligne est modifiée, l'erreur ne se produira pas.

photo = [[info objectForKey:@"UIImagePickerControllerOriginalImage"] retain]; 
+1

le UIImage a été libéré quelque part dans le code clipsée sur. Le problème réside là, et non dans l'extraction des données photo. – codelark

+0

Pouvez-vous poster du code montrant comment vous initialisez votre propriété 'photo'? – Echelon

+0

codelark - vous étiez mort. Mise à jour de la question avec une ligne que j'avais précédemment dans mon code. – amehta

Répondre

0

0x583b1d0 est probablement l'adresse de l'objet en question (la valeur de soi). Vous pouvez utiliser NSLog ou printf avec% p pour l'imprimer.

PK

Questions connexes