Как сообщить NSStreamEventEndEncountered о чтении NSInputStream из NSMutableData - PullRequest
0 голосов
/ 23 апреля 2009

В Какао я настроил два NSThreads, один производитель и один потребитель. Производитель добавляет данные в NSMutableData, а получатель открывает NSInputStream из этих данных и считывает их фрагментами.

Поток производителя пишет намного быстрее, чем процессы потребителя, и это нормально. Но продюсер производит только конечный объем работы, а затем уходит. Я бы хотел, чтобы поток потребителя обработал событие NSStreamEventEndEncountered. Как я могу сигнализировать об этом, когда NSInputStream приходит из NSMutableData?

Должен ли я просто заставить продюсера отправить серию байтов с магическим числом, обозначающим конец потока?

1 Ответ

1 голос
/ 23 апреля 2009

Производитель добавляет данные к NSMutableData, а получатель открывает NSInputStream из этих данных и считывает их фрагментами.

Это не сработает. Из документации -initWithData: :

Содержимое data скопировано.

Это означает, что он будет копировать все, что находится в объекте данных в то время, а не следовать содержимому объекта данных, когда вы добавляете в него больше данных.

(То же самое относится к +inputStreamWithData:.)

Попробуйте вместо трубы .

...