在Swift中使用UIAlertView,获得EXC_BAD_ACCESS

首先,我非常清楚Xcode 6和Swift语言都处于测试版并且容易出错; 然而,这个特别的东西似乎有些奇怪,因为到目前为止我尝试过的其他东西似乎都很好。

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

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

 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]

再说一次,我正在将其归结为测试版横幅广告,但如果我做错了什么或者是否有其他人遇到过类似的问题,我很好奇。

请尝试以下代码

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

但是在iOS 8中

UIAlertView已弃用。 因此,使用UIAlertControllerUIAlertControllerStyleAlert 。 它应该是:

 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) 

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

从Xcode 6.0 UIAlertView类:

UIAlertView已弃用。 使用UIAlertController而不是UIAlertControllerStyleAlert的preferredStyle。

在swift(iOS 8和OS X 10.10)上,您可以这样做:

 var alert = UIAlertController( title: "Send", message: "You have successfully send your feedback.", preferredStyle: UIAlertControllerStyle.Alert ) alert.addAction(UIAlertAction( title: "Ok", style: UIAlertActionStyle.Default, handler: nil )) self.presentViewController(alert, animated: true, completion: nil) 

2件你必须使用委托:self cancelButtonTitle以nil结尾

Interesting Posts