为什么在swift中,如果不从NSObject继承类,我们就不能采用协议?

为什么在swift中,如果不从NSObject继承类,我们就不能采用协议?,swift,Swift,如果我使用下面的代码,它会显示错误 “类型'HttpConnection'不符合协议'NSObjectProtocol'” 如果我将HttpConnection子类化为NSObject,那么它可以正常工作。因此,我的问题是,当我需要在swift中采用NSURLConnectionDataDelegate协议时,为什么我需要从NSObject继承类?NSURLConnectionDataDelegate本身继承自NSURLConnectionDelegate,它继承自NSObjectProtoco

如果我使用下面的代码,它会显示错误 “类型'HttpConnection'不符合协议'NSObjectProtocol'”


如果我将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){
        }
    }