Я только начинаю с программирования сокетов на iOS, и я изо всех сил пытаюсь определить использование события NSStreamEventHasSpaceAvailable для NSOutputStreams.
С одной стороны, официальная документация Apple (листинг 2) показывает, что в методе делегата -stream:handleEvent: данные должны быть записаны в выходной буфер с сообщением -write:maxLength:, постоянно передавая данные из буфера, всякий раз, когда принимается событие NSStreamEventHasSpaceAvailable.
С другой стороны, этот учебник от Ray Wenderlich и этот iOS Пример сокета TCP в GitHub игнорирует событие NSStreamEventHasSpaceAvailable и просто продолжайте и -write:maxLength: в буфер, когда им нужно (даже игнорируя -hasSpaceAvailable).
В-третьих, есть этот примерный код, который, как представляется, делает оба...
Итак, мой вопрос, каков правильный способ обрабатывать записи данных в NSOutputStream, который подключен к сокету? И каково использование кода события NSStreamEventHasSpaceAvailable, если он может (по-видимому) игнорироваться? Мне кажется, что происходит очень удачное выполнение UB (в примерах 2 и 3) или существует несколько способов отправки данных через NSOutputStream на основе сокетов...