NSOutputStream outputStreamToBuffer no cumple con los documentos?

Estoy trabajando en una aplicación de iOS basada en networking, utilizando Test Driven Development. Ahora me he topado con un error al probar los methods para escribir en la secuencia de salida. Necesito mis testings para verificar que se reanuda una escritura incompleta en el próximo evento NSStreamHasSpaceAvailable . Pensé que usar [NSOutputStream outputStreamToBuffer: capacity:] sería apropiado cuando se establece una capacidad inferior a la longitud de los datos que se están escribiendo.

La documentation dice:

Cuando el número de bytes escritos en el búfer haya alcanzado la capacidad, el estado de transmisión del flujo devolverá NSStreamStatusAtEnd.

Sin embargo, esto no es lo que estoy experimentando. Cuando bash una escritura que excede la capacidad de la secuencia, el valor de retorno de la write es -1 , y la secuencia se pone en un estado de error ( NSStreamStatusError ). Al imprimir streamError el siguiente error:

 Stream error: Error Domain=NSPOSIXErrorDomain Code=12 "The operation couldn't be completed. Cannot allocate memory" 

Si limito el bash de escritura para que coincida con la capacidad de la secuencia, la escritura en sí funciona como se esperaba, pero el estado de streamStatus sigue NSStreamStatusOpen lugar de NSStreamStatusAtEnd .

¿Me estoy perdiendo algo o es un error? Solo lo he probado en el simulador hasta ahora (OS X 10.9, Xcode 5.0.2, simulador iOS 7).

Código de muestra para reproducir:

 - (void)testOutputStreamStuff { uint8_t buf[10]; NSOutputStream *stream = [NSOutputStream outputStreamToBuffer:buf capacity:10]; [stream open]; NSLog(@"Stream status: %u", [stream streamStatus]); NSData *data = [@"Just creating some data" dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger bytesWritten = [stream write:[data bytes] maxLength:[data length]]; NSLog(@"Bytes written: %i", bytesWritten); NSLog(@"Stream error: %@", [stream streamError]); NSLog(@"Stream status: %u", [stream streamStatus]); } 

El resultado de las instrucciones NSLog anteriores es:

 Stream status: 2 Bytes written: -1 Stream error: Error Domain=NSPOSIXErrorDomain Code=12 "The operation couldn't be completed. Cannot allocate memory" Stream status: 7 

Según lo que entiendo de la documentation, el resultado esperado debería ser:

 Stream status: 2 Bytes written: 10 Stream error: (NULL) Stream status: 5 

¡Se agradece cualquier ayuda! Incluso forms alternativas de probar una unidad de una secuencia de salida, pero supongo que es un tema para una pregunta diferente. 🙂

ACTUALIZACIÓN: Lo probé en iOS 7.0.4 en un iPhone 4 con el mismo resultado. En cuanto a las testings unitarias, trabajé a su alnetworkingedor subclassando NSOutputStream y forzándolas al comportamiento deseado. Sin embargo, algunos comentarios sobre la pregunta original seguirían siendo agradables.

ACTUALIZACIÓN 2: ahora lo he probado en un iPhone 4 con iOS 6.1.3, así como en OS X 10.9. Mismo resultado que el anterior en ambos, por lo que no es específico del sistema operativo.