2015-02-02 3 views
9

मैं मैं गलत क्या कर रहा हूँ निम्न त्रुटि उत्पादन करने के लिए यह पता लगाने की प्रतीत नहीं कर सकते हैं:स्विफ्ट से NSInputStream उपवर्ग करने के लिए असफल (initWithData: चयनकर्ता unrecognizer)

2015-02-02 12:48:17.029 InputStreams[14816:221224] -[InputStreams.CustomStream initWithData:]: unrecognized selector sent to instance 0x7fda2e1aac30 

यहाँ मेरी CustomStream उपवर्ग है।

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let stream = CustomStream(data: NSData()) 
     println("Stream Name: \(stream.streamName)") 
    } 
} 

किसी भी मदद की बहुत सराहना की जाएगी:

import Foundation 

class CustomStream : NSInputStream { 
    let streamName = "My Custom Stream" 

    override init(data: NSData) { 
     super.init(data: data) 
    } 
} 

और यहाँ मैं इसे कैसे दृष्टांत कोशिश कर रहा हूँ की एक त्वरित उदाहरण है।

+0

तो क्या हम सोच रहे हैं कि यह एक बग है? इस तथ्य को देखते हुए कि यह कई दिनों तक खुला है, मुझे लगता है कि यह एक रडार दर्ज करने के बारे में है। – cnoon

+1

मैंने निम्नलिखित [रडार] दायर किया (http://openradar.appspot.com/radar?id=4504359098384384)। अगर आपको एक ही समस्या है तो कृपया डुप्लिकेट करें। यदि आप इसे नहीं समझते और समझते हैं, तो कृपया मदद करें! – cnoon

+0

मुझे एक ही समस्या का सामना करना पड़ा। स्पष्ट रूप से, यह मुझे एक बग के रूप में भी मारता है जिसे मुझे अपने नामित प्रारंभकर्ताओं (जैसे 'एनएसडीटा' या 'एनएसआरएल'' के साथ) को कॉल करना होता है, जब सबक्लासिंग का पूरा उद्देश्य यह है कि मैं शायद इनमें से किसी का भी उपयोग नहीं करना चाहता हूं। स्पष्ट रूप से, 'NSInputStream' subclassing हमेशा समस्याग्रस्त रहा है (http://blog.bjhomer.com/2011/04/subclassing-nsinputstream.html देखें), लेकिन मुझे उम्मीद थी कि उन्होंने इसे पिछले [वर्षों में] देखा था (http://lists.apple.com/archives/macnetworkprog/2007/May/msg00056.html)। – Rob

उत्तर

0

मुझे convinence init का उपयोग कर समाधान मिला है। कारण है कि यह works.I अधिक information.Please एक टिप्पणी छोड़ अगर आप इसके बारे में किसी भी विचार है के लिए Class Inheritance and Initialization की चर्चा करते हुए हूँ

class CustomStream : NSInputStream { 
    let streamName = "My Custom Stream" 
    // var data:NSData!   

    convenience override init(data: NSData) { 
     self.init() 
     // do inialization. 
     // self.data = data 
    } 

    convenience init() { 
     self.init() 
    } 
} 

ईमानदारी से कहूं तो मैं पता लगा नहीं किया है।

एक और बात, यह CFCreateBounderPair का उपयोग करने के बजाय NSInputStream मैं उपवर्ग के लिए दोनों तरीकों से successfully.The कोड यहाँ उपलब्ध है ALAssetToNSInputStream में सफलतापूर्वक ALAssetNSInputStream में बदलने की कोशिश की है सुरक्षित माना जाता है।

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