1

정말이 이벤트를 이해할 수 없습니다. 송신 대기열 (또는 비슷한 내부 구조) 이 완료되면 이전에 쓰여진 패킷을 보낼 때 이 호출되기를 기대합니다.NSStream NSStreamEventHasSpaceAvailable 이벤트가 호출 될 때?

올바른 가정입니까?


나는 Multipeer 연결을 통해 비디오 트리머 일하고 있어요, 나는 (더 NSStreamEventHasSpaceAvailable가없는 경우) 내가 카메라 프레임을 삭제할지 여부를 결정하기 위해이 속성을 사용하려면, 아니면 NSOutputStream 위해 제출할 수 있습니다 .

모든 프레임을 NSStream에 제출하는 대신 많은 카메라 프레임을 삭제해야하는 BlueTooth 연결을 상상해보십시오.

답변

6

NSStreamEventHasSpaceAvailable 이벤트가 발생하면 (최소 1 바이트 이상)을 차단없이 스트림에 쓸 수 있음을 나타냅니다. 이는 이전에 작성된 데이터가 연결의 다른 끝점으로 전달 된 임을 의미하지는 않습니다.

+0

그래서 내가 옳다면 블루투스 지연을 해결하기 위해 "사용"할 수 없습니다. – Geri

+0

NSStream이 구현 한 기능은 무엇입니까? 왜 타이머를 만들고 내부에서 주기적으로 데이터를 보내는 것이 낫습니까? 나는이 수업을 정말로 이해할 수 없다. – Geri

+0

@Geri : 내부 버퍼가 가득 차면 스트림에 쓰면 현재 스레드를 차단할 수 있습니다. NSStreamEventHasSpaceAvailable은 쓰기가 좋은 시점을 알려줍니다. –