XMLParserDelegate初始化问题

项目中需要根据不同情况给XMLParser指配不同的代理方法,因此我把代理方法分别写成两个遵循XMLParserDelegate协议的类(下面简称ParserDelegate)。然后我按照正常流程初始化,大致如下:

init(...) {
...
  self.parser = XMLParser(url: url)!
  let delegate = ParserDelegate()  //引起错误
  self.parser.delegate = delegate
  print(delegate)
  print(self.parser.delegate)
  super.init()
...
}

两个print都能打印出正确的值,parser也不为空,但一旦执parser.parse()方法就会报EXC_BAD_ACCESS错误,这个错大概是指针指向空对象引起的。最后我发现问题出在这句let delegate = ParserDelegate(),然后在我把这个代理作为此类的一个属性后,问题解决。原因是初始化结束后这个代理被自动释放了。

你可能感兴趣的:(XMLParserDelegate初始化问题)