}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)stream read:buf maxLength:1024];
if(len) {
[_data appendBytes:(const void *)buf length:len];
// bytesRead is an instance variable of type NSNumber.
[bytesRead setIntValue:[bytesRead intValue]+len];
} else {
NSLog(@"no buffer!");
}
break;
}
// continued
3)销毁流对象:
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
{
switch(eventCode) {
case NSStreamEventEndEncountered:
{
[stream close];
[stream removeFromRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[stream release];
stream = nil; // stream is ivar, so reinit it
break;
}
// continued ...
}
}
二,向输入流写入:
1)创建并初始化一个 NSOutputStream,并设置一个代理
2)安排流对象到一个 run loop 并打开。
3)处理事件
4)如果流对象已经将数据写入内存,通过键 NSStreamDataWritenToMemoryStreamKey 来
获得数据。
5)当没有更多的数据需要写时,销毁流对象。
1)准备流对象:必须给输入流指定一个目标,刻意是一个文件,一个 C buffer,应用程
序内存,或一个网络 socket