基本上我想知道这个之间的区别
protocol ViewDelegate: class {
func someFunc()
}
还有这个
protocol ViewDelegate: NSObjectProtocol {
func someFunc()
}
有什么不同吗?
最佳答案 只有Object或Instance类型可以符合这两种类型的协议,其中Structure和Enum不能同时符合这两种类型
但主要的区别是:
如果一个声明如下协议意味着它继承NSObjectProtocol
protocol ViewDelegate: NSObjectProtocol {
func someFunc()
}
如果符合的类不是NSObject的子类,那么该类需要在其中包含NSObjectProtocol方法实现. (通常,NSObject确实符合NSObjectProtocol)
例如:
class Test1: NSObject, ViewDelegate {
func someFunc() {
}
//no need to have NSObjectProtocol methods here as Test1 is a child class of NSObject
}
class Test2: ViewDelegate {
func someFunc() {
}
//Have to implement NSObjectProtocol methods here
}
如果一个声明如下,则意味着只有对象类型可以通过实现其方法来符合它.没什么特别的
protocol ViewDelegate: class {
func someFunc()
}