"Received memory warning. Level=1" bei mehrmaligem Aufruf von UIImagePickerController

  • "Received memory warning. Level=1" bei mehrmaligem Aufruf von UIImagePickerController

    Hallo zusammen,

    in meinem UIViewController rufe ich die Kamera mit dem UIImagePickerController auf. Bei dem Aufruf kommt erst mal auf der Konsole immer der Hinweis:

    "Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations."

    Ansonsten klappt dann erst mal alles - ich kann ein Bild machen, alles ist gut. Wenn ich aber mehrmals die Kamera nutze, dann kommt nach 4-5 Mal ein "Received memory warning. Level=1". Und jetzt kommt das komische:
    Nach dem Received memory warning wird in meinem ViewContoller zwei mal die Methode "didReceiveMemoryWarning" aufgerufen. Es sieht so aus, als gäbe es nach dem Warning zwei Instanzen von meinem UIViewController. Kann das sein?

    Hier mein Aufruf:

    Quellcode

    1. -(void)openCamera
    2. {
    3. [self saveInfos];
    4. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    5. {
    6. UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    7. picker.delegate = self;
    8. picker.allowsEditing = NO;
    9. picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    10. // [[[UIApplication sharedApplication] keyWindow] setRootViewController:picker];
    11. [self presentModalViewController:picker animated:YES];
    12. // [picker release];
    13. }else{
    14. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:NSLocalizedString(@"Keine Kamera Alert", @"Alert") delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release];
    15. }
    16. }
    Alles anzeigen


    Hier wird das geschossene Bild verarbeitet

    Quellcode

    1. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    2. {
    3. UIImage * selectedImage = (UIImage *) [info valueForKey:UIImagePickerControllerOriginalImage];
    4. [picker dismissModalViewControllerAnimated:YES];
    5. [self takeAndDisplayImage:selectedImage];
    6. [picker release];
    7. //[[[UIApplication sharedApplication] keyWindow] setRootViewController:self];
    8. }
    Alles anzeigen


    Danke schon mal :)
  • Dir ist schon klar, das das mit dem release weglassen beim show und einbauen beim didFinish eine riesen Sauerei ist oder ? Mal ganz davon abgesehen, dass Du Dir ja gar nicht sicher sein kannst, dass Du den gleichen Picker bekommst (Vlt meinte das System ja ihn kopieren zu müssen) kann der Anwender ja auch den Picker schließen ohne ein Bild auszuwählen und dann wird didFinish ja gar nicht aufgerufen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Dir ist schon klar, das das mit dem release weglassen beim show und einbauen beim didFinish eine riesen Sauerei ist


    ups ja sorry - habe diverse Testdinge probiert. Unter anderem auch das release zu verschieben - daher war das da auskommentiert

    "self" habe ich mir mal ausgeben lassen- ist die gleiche Instanz. Seltsam seltsam