2015-02-02 6 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

동일한 문제가 발생했습니다. 솔직히 서브 클래 싱의 모든 목적이 내가 그 중 하나를 사용하고 싶지 않을 때 지정된 초기화 자 (예 : NSData 또는 NSURL) 중 하나를 호출해야하는 버그로 나를 공격합니다. 솔직히,'NSInputStream'을 서브 클래 싱하는 것은 항상 문제가 있었지만 (http://blog.bjhomer.com/2011/04/subclassing-nsinputstream.html 참조), 나는 그들이 [지난 8 년 동안] 이것을 보았 으면 좋겠다 (http://lists.apple.com/archives/macnetworkprog/2007/May/msg00056.html). – Rob

답변

0

convinence 초기화를 사용하는 해결책을 발견했습니다. 그것은을 남기고 당신이 그것에 대해 어떤 생각을 가지고있는 경우 의견을 남겨 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() 
    } 
} 

내가 파악하지 않은 정직합니다.

한 가지 더, successfully.The 코드가 여기 ALAssetToNSInputStream 모두 사용할 수있는 방법에 성공적으로 ALAssetNSInputStream에 변환 시도 CFCreateBounderPair를 사용하는 것이 아니라 NSInputStream .I 서브 클래스 안전한 것으로 간주됩니다.