NSStream의 스레딩 프로세스를 설명하는 문서를 찾지 못했습니다. 구체적으로 말하자면, NSInputStream을 찾아 보겠습니다. 나에게 Objective-C 스레딩은 현재 너무 단순 해 보이기 때문에 현재 미스테리입니다.scheduleInRunLoop - 스레딩 네트워크 연결
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
당신은 내가 아주 멋진라고 생각 입력 스트림에서 실행됩니다 실행 루프를 지정할 수 있습니다 : 내 질문은 무엇
은 주로이 라인을 의미합니다. 문제는 입력 및 출력 스트림을 자체 스레드에서 실행하고 두 클래스 모두 단일 클래스에서 인스턴스화한다고 가정 할 때 Connection이 자신의 스레드에서 실행되도록하려면 어떻게해야합니까?
내가 물어 보는 이유는 대표자 때문입니다. 이전에는 [inputStream setDelegate:self]
을 수행 했으므로 수신/송신 데이터를 처리하기 위해 stream:handleEvent
을 선언해야합니다.
궁극적으로 내 질문은 입력 및 출력 스트림을 설정하는 클래스가 하나있는 경우 어떻게 각 스트림을 스레드하고 스트림 이벤트 처리 책임을 현재 클래스에 위임합니까?
이-
당신은 현재 클래스에서 모두 스레드에 대한 책임을 위임 할 수 없습니다
- , 당신이해야 할 것 :
[inputStream setDelegate:self]; [outputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; [outputStream open];
나는이 다음 생각하고 있어요 : 여기
는에 씹는하는 몇 가지 코드입니다 개체를 분리하여 위임합니다. - 하나의 스레드가 두 스트림에 모두 적용됩니까? (나는 개인적으로 그렇게 생각하지 않는다. 왜냐하면 입출력은 동시에 실행되기 때문이다.)
- 나는 이것을 잘못 생각하고 있으며, 별도의 실행 루프를 만들고 scheduleRunLoop을 별도의 스레드에 대해 호출 할 수있다.
아이디어가 있으십니까?
-1 그냥 코드는 답변이 아닙니다. 설명해야합니다. 왜 당신이하고있는 일을하는지에 대한 약간의 설명조차도. – Fogmeister
약간의 설명이 도움이 될 것입니다. 나는 이것에 downvote하지 않기를 강요하고있다. .. –