一尘不染

Swift中的UIAlertView,获取EXC_BAD_ACCESS

swift

首先,我很清楚Xcode
6和Swift语言是Beta版本,容易出错。但是,这一特定功能似乎有些奇怪,因为到目前为止我尝试过的所有其他功能似乎都可以正常工作。

如果这不适合StackOverflow,我将很乐意删除该问题。

我已经开始使用Xcode 6 /
Swift(为发布做准备),与我想的相比,这是一种非常愉快的体验。话虽如此,在移植我喜欢做的“训练”风格的应用程序时,一个问题是由于EXC_BAD_ACCESS相关代码,我似乎无法生成UIAlertView

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    var alert = UIAlertView(title: "Title", message: "Message", delegate: nil, cancelButtonTitle: "OK") // EXC_BAD_ACCESS here
    alert.show()
}

在创建UIAlertView的行中,我得到了一个EXC_BAD_ACCESS因为[UIAlertView retain]在已释放实例上被调用。

再次,我将其归为beta横幅,但很好奇我是否做错了什么,或者是否有人遇到类似问题。


阅读 236

收藏
2020-07-07

共1个答案

一尘不染

试试下面的代码

let alert = UIAlertView()
alert.title = "Title"
alert.message = "My message"
alert.addButtonWithTitle("Ok")
alert.show()

但是在iOS 8中

UIAlertView不推荐使用。因此,使用UIAlertControllerpreferredStyleUIAlertControllerStyleAlert。它应该是:

var alert = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)

检查上面的代码,您是否遇到相同的错误?

2020-07-07