Come segnalare un NSStreamEventEndEncountered su una lettura NSInputStream da NSMutableData
-
13-09-2019 - |
Domanda
In Cacao, ho installato due NSThreads, un produttore e un consumatore. Il produttore aggiunge dati a un NSMutableData, e il ricevitore si apre un NSInputStream da tali dati e legge in pezzi.
Il filo produttore scrive molto più velocemente di quanto i processi di consumo, che è ok. Ma il produttore produce solo una quantità finita di lavoro, poi esce. Mi piacerebbe per il thread consumatore di gestire l'evento NSStreamEventEndEncountered. Come posso segnalare questo quando il NSInputStream proviene da una NSMutableData?
Devo solo fare il produttore invia una serie di byte con un numero magico che indica la fine del flusso?
Soluzione
Il produttore aggiunge dati a un NSMutableData, e il ricevitore si apre un NSInputStream da tali dati e legge in pezzi.
Non funzionerà. Da la documentazione -initWithData:
:
Il contenuto di
data
vengono copiati.
Significato, copierà fuori tutto quello che è nell'oggetto di dati in quel momento, non segue il contenuto dell'oggetto di dati quando si aggiungono più dati su di esso.
(Lo stesso vale per +inputStreamWithData:
)