2013-03-26 62 views
1

我有一個視圖,其中有6個圖像視圖。我使用相機UIImagePickerController設置圖像。每次我選擇第三張圖片時,我的應用總是崩潰,當我檢查了樂器時,沒有任何泄漏。什麼不對? 這裏是我的代碼:應用程序崩潰後拍攝第3張圖片 - iOS

- (void)openCamera 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 

    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    { 
     [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
     [imagePicker setDelegate:self]; 
     [self presentViewController:imagePicker animated:YES completion:nil]; 
    } 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSData* imageData = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.0001f); 
    [self dismissViewControllerAnimated:true completion:nil]; 
    if ([_selectedButton isEqualToString:@"headOffice"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgHeadOffice"]; 
     //_imgHeadOffice = [UIImage imageWithData:imageData]; 
     _imgViewHeadOffice.image = [UIImage imageWithData:imageData]; 
    } 
    else if ([_selectedButton isEqualToString:@"siteOffice"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgSiteOffice"]; 
     //_imgSiteOffice = [UIImage imageWithData:imageData]; 
     _imgViewSiteOffice.image = [UIImage imageWithData:imageData]; 
    } 
    else if ([_selectedButton isEqualToString:@"roadCondition"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgRoadCondition"]; 
     //_imgRoadCondition = [UIImage imageWithData:imageData]; 
     _imgViewRoadCondition.image = [UIImage imageWithData:imageData]; 
    } 
    else if ([_selectedButton isEqualToString:@"vehicle"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgVehicle"]; 
     //_imgVehicle = [UIImage imageWithData:imageData]; 
     _imgViewVehicle.image = [UIImage imageWithData:imageData]; 
    } 
    else if ([_selectedButton isEqualToString:@"installedTire"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgInstalledTire"]; 
     //_imgInstalledTire = [UIImage imageWithData:imageData]; 
     _imgViewInstalledTire.image = [UIImage imageWithData:imageData]; 
    } 
    else if ([_selectedButton isEqualToString:@"tireScrap"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"imgTireScrap"]; 
     //_imgTireScrap = [UIImage imageWithData:imageData]; 
     _imgViewTireScrap.image = [UIImage imageWithData:imageData]; 
    } 
} 

這裏是我的儀器快照: Instrument's snapshot

編輯: 在加工生產線

NSData* imageData = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.0001f); 

應用程序崩潰的第三次我拍照。
這是日誌,當應用程序關閉 log snapshot

+0

你使用ARC嗎? – 2013-03-26 09:22:44

+0

是的..我使用弧。 – 2013-03-26 09:23:28

+0

這些圖像是否相同?可能是他們有大尺寸,你的應用程序想分配一個巨大的緩衝區,所以ios殺死它 – 2013-03-26 09:26:05

回答

0

顯然採樣圖像仍然使得它大約200 KB的大小。下降採樣後,我將其重新調整到37.5%,它工作得很好。 thx全部