як викликати NSStream Синхронно

Як викликати NSStream синхронно, щоб отримати результати ??

В даний час я отримую асинхронний виклик в одному з його методів делегування

 `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
4
чому ви хочете отримувати потокові дані синхронно?
додано Автор TheEye, джерело

1 Відповіді

NSStream - абстрактний клас, який не читає або записує дані в потік. Щоб реально отримати доступ до даних, вам знадобиться конкретний підклас, наприклад NSInputStream або NSOutputStream (або ваш власний підклас NSStream ). Щоб прочитати дані в NSInputStream , виклик read: maxLength: . Можливо, ви захочете опублікувати потік, запитавши, чи є якісь нові дані, з hasBytesAvailable . Метод NSOutputStream має аналогічні методи write: maxLength: і hasSpaceAvailable .

Документація iOS дуже рекомендує уникнути опитування, а замість цього використовуйте run-loop планування, реагуючи на методи делегату async call.

7
додано
Якщо ви працюєте в окремому потоці, то опитування не потрібно. Ви можете просто читати з вхідного потоку, і він буде блокувати до тих пір, поки не будуть доступні дані/потік закритий/виникає помилка. Відповіді емулюють posix поведінку, де 0 означає потік закритий, -1 означає, що сталася помилка. Позитивне число означає фактичні байти, прочитані з потоку.
додано Автор JugsteR, джерело