应用程序在呈现UIImagePickerController后崩溃

时间:2014-08-29 08:30:31

标签: ios swift uiimagepickercontroller dealloc xcode6-beta6

我试图提供一个 UIImagePickerController ,以便从相册中获取图片,而我正面临一种奇怪的行为。

如果我在 viewDidLoad 中启动图像选择器,它可以正常工作:

class CaptureImageViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    initPicker()
}

func initPicker() {
    let picker = UIImagePickerController()
    picker.delegate = self
    picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    presentViewController(picker, animated: true, completion: nil)
}

func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]!) {
    dismissViewControllerAnimated(true, completion: nil)
    imageView.image = info["UIImagePickerControllerOriginalImage"] as UIImage
}

func imagePickerControllerDidCancel(picker: UIImagePickerController!) {
    dismissViewControllerAnimated(true, completion: nil)
}

}

但是,如果我将 initPicker()转换为 @IBAction 并从按钮调用它,点击它后,图像选择器会出现但突然应用程序崩溃有这个错误:

CaptureImageViewController respondsToSelector:]: message sent to deallocated instance 0x7960b1e0

我正在使用XCode Beta 6在模拟器上工作

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试将 UIImagePickerController 的对象声明为 Instance 级别参数,而不是在函数内。

答案 1 :(得分:0)

在测试了一系列不同的方法但没有成功之后,我已经改变了功能签名并且......它有效!

似乎init前缀混淆了Swift。

我在论坛和官方文档中寻找一些相关主题,但我没有得到任何东西。

也许是个错误?