一尘不染

为什么不从NSObject继承类就不能迅速采用协议?

swift

如果我使用以下代码,则会向我显示错误“类型’HttpConnection’不符合协议’NSObjectProtocol’”

class HttpConnection : NSURLConnectionDataDelegate {
        var urlConnection       : NSURLConnection?
        weak var delegate       : HttpConnecting?

        init(delegate:HttpConnecting){
            self.delegate = delegate;
        }

        func startAsynRequestWithUrlString(url:NSString, withMethod:NSString){
        }
    }

如果我将HttpConnection子类化为NSObject,则可以正常工作。所以我的问题是,当我需要迅速采用NSURLConnectionDataDelegate协议时,为什么需要从NSObject继承该类?


阅读 200

收藏
2020-07-07

共1个答案

一尘不染

NSURLConnectionDataDelegate本身NSURLConnectionDelegate继承自NSObjectProtocol

这意味着除了实现NSURLConnectionDataDelegate,和中的所有方法外NSURLConnectionDelegate,您还必须实现,和中的所有方法NSObjectProtocol(例如,相等,哈希)。

您没有实现它们,这是您的错误。如果您从继承NSObject,则所有这些NSObjectProtocol方法都已经为您实现。

2020-07-07