ios – Swift中的parser.parse()导致EXC_BAD_ACCESS

我正在关注 this tutorial作为我在Swift工作的RSS支线应用程序的一个快速启动.我知道自本教程以来,Swift中有一些变化,但它们似乎都没有解释为什么我遇到这个问题.

相关代码(据我所知)在我的TableViewController中如下:

override func viewDidLoad() {
    super.viewDidLoad()

    let url:NSURL = NSURL(string: "my.url.string")
    parser = NSXMLParser(contentsOfURL: url)
    parser.delegate = self
    parser.parse() // <- Thread 1: EXC_BAD_ACCESS (code=1,address=0x0)

}

实际的解析器委托方法似乎没有问题,因为我在它们上放置了断点,甚至在崩溃之前都没有调用它们.

我的假设是它是一个Swift错误,但我想确保在我向苹果抱怨之前我没有遗漏任何东西.

解决方法

自动翻译的标题中似乎存在错误,假定始终使用限定名称空间,但是,因为它们有时可能为零,所以它会崩溃.

如果您使用:

func parser(parser: NSXMLParser,didStartElement elementName: String,namespaceURI: String!,qualifiedname qName: String!,attributes attributeDict: [NSObject : AnyObject]!)

通过使命名空间和qualifiedname参数隐式解包(或明确包装也应该工作)你应该很好.

您可能必须对您提供的采用namespaceURI或qualifiedname参数的任何委托方法进行类似的更改.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...