2016-12-14 6 views
2

Я столкнулся с проблемой в UIImagePickerController выбор. Когда я выбираю источник из приложения «Фотобиблиотека» из-за Недопустимая подпись для указателя, выгруженного из бесплатного списка. Затем, если я снова запустил, он отлично работает с тем же кодом. Я искал в Google и нашел один вопрос, связанный с моим запросом Xcode - My app crash and the error is "Invalid pointer dequeued from free list *** set a breakpoint in malloc_error_break to debug".Приложение разбилось из-за недопустимой подписи для указателя, освобожденного из бесплатного списка в UIImagePickerController

но решение не работает в моем случае.

Я использую Xcode 8.1, а мое развертывание - 8.0.

+0

Вы решили эту проблему/проблему? –

+1

Нет, это все еще сбой ... Я думаю, что это Xcode8.1 issue –

+0

Я тоже получаю это исключение прямо сейчас, и если я получу какое-либо решение, я обязательно отвечу вам как можно скорее. –

ответ

1

Как @luke испрашивается код для UIImagePickerViewController:

let pickerView = UIImagePickerController() 
    pickerView.delegate = self 
    pickerView.allowsEditing = true 

    pickerView.sourceType = .photoLibrary 

    let authStatus = PHPhotoLibrary.authorizationStatus() // Get the current authorization state. 
    // print(authStatus) 


    if (authStatus == PHAuthorizationStatus.notDetermined) { 

     // Access has not been determined. 
     PHPhotoLibrary.requestAuthorization({ (newStatus) in 

      if (newStatus == PHAuthorizationStatus.authorized) { 
       self.present(pickerView, animated: true, completion: { _ in }) 

      } 

      else { 

      } 
     }) 

    } else if authStatus == PHAuthorizationStatus.authorized { 
     print("Access has been granted.") 

     self.present(pickerView, animated: true, completion: { _ in }) 

    } else if (authStatus == PHAuthorizationStatus.denied) { 
     print("Access has been denied.") 

    } 
    else if (authStatus == PHAuthorizationStatus.restricted) { 

     print("Restricted access - normally won't happen.") 

    } 

Теперь, когда пользователь выбирает конкретное изображение: Этот метод будет называться:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    //print(info) 
    if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage { 
      YOUR_GLOBAL_IMAGE_VIEW?.contentMode = .scaleAspectFit 
      YOUR_GLOBAL_IMAGE_VIEW?.image = pickedImage 

     } 
    } 

    dismiss(animated: true, completion: nil) 
} 

Не забудьте импортировать PhotosUI и UIImagePickerControllerDelegate.

+0

Спасибо за это! Ошибка кажется довольно случайной для меня, поэтому придется несколько раз протестировать ее на следующий день или около того. – luke

+0

Хорошо, не проблема :) –