呈现UIImagePickerController后应用程序崩溃
问题描述:
我试图提出一个UIImagePickerController为了从相册中获取图像,我正面临一个奇怪的行为。呈现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测试版6
任何想法?
答
在测试了一堆不成功的方法之后,我改变了函数签名,并且它可以工作!
看起来init
前缀混淆了Swift。
我正在寻找一些在论坛和官方文档相关的话题,但我没有得到任何东西。
也许是一个错误?
你可以发布IBAction的代码吗? – Akaino 2014-08-29 10:41:36
@Aainain,它的代码完全一样,但是将** initPicker()**转换为** viewDidLoad()**会消失。另外,** initPicker()**函数定义成为** @ IBAction func initPicker(){...} ** – dlao 2014-08-29 14:39:06