[英]iOS 7 crashes BAD_ACCESS when using UIImagePickerController
我正在嘗試使用UIImagePickerController讓我的用戶選擇照片或拍照以在我的應用中使用。 但是,無論何時從照片中選擇圖像或選擇使用照片,應用程序似乎都會崩潰。 我使用了NSZombie對象並收到此消息:
[NSISRestrictedToNonNegativeVariable retain]:消息發送到解除分配的實例0x168c3530
我不知道這里發生了什么。 偶爾呈現模態視圖時也會出現同樣的問題。
這是我的代碼,用於呈現UIImagePickerController並處理響應:
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:CANCEL_TITLE]) {
return;
}
UIImagePickerControllerSourceType sourceType = buttonIndex == 0 ? UIImagePickerControllerSourceTypePhotoLibrary : UIImagePickerControllerSourceTypeCamera;
UIImagePickerController* controller = [[UIImagePickerController alloc] init];
controller.sourceType = sourceType;
[controller setDelegate:self];
if (buttonIndex == 1) {
//PNCoverOverlayView* overlayView = [PNCoverOverlayView viewWithNibNamed:nil];
//[controller setCameraOverlayView:overlayView];
[controller setShowsCameraControls:YES];
}
[self presentViewController:controller animated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{
UIImage* originalImage = info[UIImagePickerControllerOriginalImage];
_imageToUpload = originalImage;
CGFloat scaleAdjust = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) ? 0.5 : 1;
CGFloat length = LENGTH * scaleAdjust;
if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera) {
PNCoverOverlayView* overlay = (PNCoverOverlayView*)[picker cameraOverlayView];
CGSize overlaySize = [overlay frame].size;
UIImage* cropped = [UIImage imageCroppedToSize:overlaySize fromImage:originalImage];
_imageToUpload =[UIImage imageResizedToSize:CGSizeMake(length, length) fromImage:cropped];
} else {
_imageToUpload = [UIImage imageScaledToMaximumLength:length fromImage:originalImage];
}
[self performSegueWithIdentifier:@"reviewPhotoUpload" sender:self];
}];
}
我注釋了向UIImagePickerController添加自定義疊加層,因為它修復了在呈現UIImagePickerController時應用程序崩潰的問題
你應該檢查以下事項:
你在設備上測試嗎?
按照本蘋果指南中
Overview
中提到的步驟操作,並注意您運行的設備。 例如,iPhone或iPad。另外,檢查isCameraDeviceAvailable屬性。
在嘗試獲取cameraOverlayView時 ,您應該檢查它是否
nil
。 有關更多信息,請參閱此屬性的文檔。
希望能幫助到你!
您正在函數中實例化控制器:
UIImagePickerController* controller = [[UIImagePickerController alloc] init];
你應該對你班上的控制器有一個強有力的參考,一個ivar將是一個很好的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.