2014-07-18 5 views
2

GCDAsyncSocket을 사용하여 내 응용 프로그램과 연결하려고합니다.Objective-C 클래스를 사용하는 Swift

컴파일 오류가 발생합니다. 나는이 때 :

class Connection : NSObject {  
    var connected: Bool 
    var tcpSocket: GCDAsyncSocket? 
    var myHost: String = "127.0.0.1" 
    var myPort: UInt16 = 0 

    init() { 
     connected = false 
    } 
    func initialize(host: String, port: UInt16) { 

    } 
    func connect() { 
     tcpSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) 
     var error: NSError? 
     tcpSocket!.connectToHost(myHost, port: myPort, error: error) 

    } 
} 

를 내가 얻을 : "누락 인수 매개 변수 'withTimeout'콜에서" 이로 변경하는 경우 :

class Connection : NSObject {  
var connected: Bool 
var tcpSocket: GCDAsyncSocket? 
var myHost: String = "127.0.0.1" 
var myPort: UInt16 = 0 

init() { 
    connected = false 
} 
func initialize(host: String, port: UInt16) { 

} 
func connect() { 
    tcpSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) 
    var connectionError: NSError? 
    tcpSocket!.connectToHost(myHost, port: myPort, withTimeout: -1.0, error: connectionError) 

}} 

를 내가 얻을 : "추가 인수 'withTimeout' 전화 " 나는 혼란 스러워요 ...

+0

있어야한다 보인다 오류가 발생했습니다. & connectionError로 변경하고 오류가 사라졌습니다. –

답변

1

을에 그 방법의 정의는 다음과 같습니다

- (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr; 

errPtr 마지막 매개 변수를 자세히 살펴보면 NSError 유형의 변수에 포인터를 전달해야한다는 것을 알 수 있습니다. 이는 inout 수정자를 사용하여 전달 된 매개 변수로 신속하게 변환됩니다.

그래서 그 메소드를 호출하는 올바른 방법은 다음과 같습니다

tcpSocket!.connectToHost(myHost, onPort: myPort, error: &error) 

이 코드에서 mispelled 매개 변수가되었다 : 그것이 오류 포인터처럼 port: myPortonPort: myPort

+0

알아 낸 onPort 부분, 복사 붙여 넣기 오류가 발생했습니다. 결국 나는 그것을 작동하게 만들었지 만 회신에 많은 감사를 드린다. –