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?

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top