2014-07-09 9 views
11

तो मैं त्रुटि निम्नलिखित कोड यह मुझे पता चलता का उपयोग करें "प्रकार 'HttpConnection' प्रोटोकॉल के अनुरूप नहीं है 'NSObjectProtocol'"तेजी से क्यों हम NSObject से विरासत के बिना एक प्रोटोकॉल अपनाने नहीं कर सकते हैं?

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

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

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

तो मैं NSObject को HttpConnection उपवर्ग तो यह ठीक काम करता है। तो मेरा सवाल यह है कि जब मुझे NSURLConnectionDataDelegate प्रोटोकॉल को तेज़ी से अपनाने की आवश्यकता होती है तो मुझे NSObject से कक्षा का उत्तराधिकारी क्यों होना चाहिए?

+0

संबंधित: http://stackoverflow.com/q/24991018/242933 – ma11hew28

उत्तर

33

NSURLConnectionDataDelegate स्वयं NSURLConnectionDelegate से प्राप्त होता है जो NSObjectProtocol से प्राप्त होता है।

इसका मतलब है कि NSURLConnectionDataDelegate, और NSURLConnectionDelegate से सभी विधियों को लागू करने के अलावा, आपको NSObjectProtocol (उदा। समानता, हैश) से सभी विधियों को भी लागू करना होगा।

आपने उन्हें लागू नहीं किया है, यह आपकी गलती है। यदि आप NSObject से प्राप्त करते हैं, तो आपके लिए NSObjectProtocol विधियां पहले से ही लागू की गई हैं।

+0

धन्यवाद हाँ मैंने देखा कि NSObjectProtocol में सभी विधियों की आवश्यकता है :) –

4

क्योंकि documentation में यह कहते हैं:

NSURLConnectionDataDelegate प्रोटोकॉल का वर्णन करता है तरीकों कि NSURLConnection वर्ग का एक उदाहरण के लिए प्रतिनिधि द्वारा लागू किया जाना चाहिए। ओएस एक्स और आईओएस के पिछले संस्करणों में अनौपचारिक प्रोटोकॉल के हिस्से के रूप में इस प्रोटोकॉल में कई विधियां मौजूद थीं।

इस प्रोटोकॉल में वर्णित विधियों के अलावा, एक NSURLConnection प्रतिनिधि भी तरीकों को लागू करना चाहिए NSURLConnectionDelegate प्रोटोकॉल में का वर्णन किया।

और NSURLConnectionDelegate NSObject के अनुरूप है। बस अपनी कक्षा को NSObject से प्राप्त करें और आपको जाना अच्छा होगा।

संबंधित मुद्दे

 संबंधित मुद्दे