2009-06-24 8 views
1

c'est un extrait bien connu, comment sélectionner une image de la photothèque iPhone:fuites de code iPhone et je ne sais pas pourquoi

- (IBAction)selectExistingPicture { 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentModalViewController:picker animated:YES]; 
      [picker release]; 

    } 
} 

Ici vous pouvez voir une capture d'écran des instruments (fullscreen).

alt text http://img.skitch.com/20090624-rtqp2mgsnyynkgb97c9e8d2g9c.jpg

Pourquoi faut-il une fuite? Je ne comprends pas, parce que le sélecteur est libéré correctement, je pense.

Répondre

6

Le UIImagePickerController est known to leak. Si vous allez l'utiliser plus d'une fois, il est recommandé de réutiliser une seule instance.

+2

Ok, merci. Étrange que Apple rejette les applications en raison de fuites, mais produit des fuites eux-mêmes. – Stefan

4

Vous présentez le sélecteur, mais vous perdez le pointeur lorsque vous quittez la méthode. Comme il est alloué de la mémoire, c'est votre fuite. Essayez:

UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease]; 
+0

J'ai déjà essayé ceci: même problème. Désolé, j'ai oublié: [communiqué de sélecteur] dans mon message. Edité. – Stefan

2

Ne devriez-vous pas effectuer une auto-autorisation sur le UIImagePickerController?

UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];

+0

Même réponse que ci-dessus ;-) J'ai déjà essayé cela: même problème. Désolé, j'ai oublié: [communiqué de sélecteur] dans mon message. Edité. – Stefan

Questions connexes