我有一个类XMLUtil
,它包含了一些xml解析功能。该类有一个通用参数T
。该类还充当NSXMLParserDelegate
委托人的NSXMLParser
。
class XMLUtil<T>: NSObject, NSXMLParserDelegate{
...
...
init(){
parser = NSXMLParser(data: NSData)
parser.delegate = self
parser.parse()
}
...
...
//delegate method implementations
}
问题:
当我的XMLUtil类是泛型类时,委托方法永远不会被调用。但是,当我实现没有通用参数的XMLUtil
类
这两个问题似乎具有相似的性质
Swift Generic class as delegate
NSURLConnection Delegate Methods Not Called In Generic Class
文档中是否有任何可以解释此行为的内容?这是故意还是错误?
答案 0 :(得分:3)
当我的XMLUtil类是泛型类
时
但Objective-C对泛型类一无所知。因此无法将您的XMLUtil类显示给Objective-C。因此,它不能作为NSXMLParser的委托; NSXMLParser是一个Objective-C类,如果它是通用的,则无法看到您的XMLUtil类。
一种简单的方法是尝试将XMLUtil类标记为@objc
。你会失败;编译器会阻止你。没有办法将此类显示给Objective-C。