Como sinalizar um NSStreamEventEndEncountered numa leitura NSInputStream de NSMutableData
-
13-09-2019 - |
Pergunta
Em Cacau, eu configurar dois NSThreads, um produtor e um consumidor. O produtor acrescenta dados a um NSMutableData, eo receptor abre uma NSInputStream de que os dados e lê em blocos.
O segmento produtor escreve muito mais rápido do que os processos de consumo, que é OK. Mas o produtor produz apenas uma quantidade finita de trabalho, em seguida, sai. Eu gostaria para o segmento de consumo para manipular o evento NSStreamEventEndEncountered. Como posso sinalizar isso quando o NSInputStream vem de uma NSMutableData?
Devo apenas fazer o produtor enviar uma série de bytes com um número mágico significando um fim de stream?
Solução
O produtor acrescenta dados a um NSMutableData, eo receptor abre uma NSInputStream de que os dados e lê em blocos.
Isso não vai funcionar. De a documentação -initWithData:
:
O conteúdo do
data
são copiados.
Ou seja, ele irá copiar para fora tudo o que está no objeto de dados, nesse momento, não siga o conteúdo do objeto de dados como você adicionar mais dados a ele.
(O mesmo vale para +inputStreamWithData:
)
Tente um tubulação .