为什么在swift中,如果不从NSObject继承类,我们就不能采用协议?
如果我使用下面的代码,它会显示错误 “类型'HttpConnection'不符合协议'NSObjectProtocol'”为什么在swift中,如果不从NSObject继承类,我们就不能采用协议?,swift,Swift,如果我使用下面的代码,它会显示错误 “类型'HttpConnection'不符合协议'NSObjectProtocol'” 如果我将HttpConnection子类化为NSObject,那么它可以正常工作。因此,我的问题是,当我需要在swift中采用NSURLConnectionDataDelegate协议时,为什么我需要从NSObject继承类?NSURLConnectionDataDelegate本身继承自NSURLConnectionDelegate,它继承自NSObjectProtoco
如果我将HttpConnection子类化为NSObject,那么它可以正常工作。因此,我的问题是,当我需要在swift中采用NSURLConnectionDataDelegate协议时,为什么我需要从NSObject继承类?
NSURLConnectionDataDelegate
本身继承自NSURLConnectionDelegate
,它继承自NSObjectProtocol
这意味着,除了实现nsurconnectiondatadelegate
和nsurconnectiondelegate
中的所有方法外,还必须实现NSObjectProtocol
中的所有方法(例如相等、哈希)
你没有实施,那是你的错误。如果您继承自NSObject
,则所有NSObjectProtocol
方法都已为您实现。,因为在
NSURLConnectionDataDelegate协议描述了应该
由NSURLConnection实例的委托实现
班级。本协议中的许多方法都是非正式协议的一部分
OSX和iOS早期版本中的协议
除了本协议中描述的方法外,还包括
NSURLConnection委托还应实现所述的方法
在NSURLConnectionLegate协议中
NSURLConnectionLegate符合NSObject。只要让您的类继承自NSObject,就可以了。谢谢,是的,我看到NSObjectProtocol中的所有方法都是必需的,与方法:)相关:
class HttpConnection : NSURLConnectionDataDelegate {
var urlConnection : NSURLConnection?
weak var delegate : HttpConnecting?
init(delegate:HttpConnecting){
self.delegate = delegate;
}
func startAsynRequestWithUrlString(url:NSString, withMethod:NSString){
}
}