【发布时间】:2011-10-27 02:00:22
【问题描述】:
我想知道将NSOutputStream 重定向到标准输出的最佳方法是什么。我现在使用的技术是使用写入内存的输出流,获取其数据并将其打印到标准输出:
NSOutputStream *stream = [[NSOutputStream alloc] initToMemory];
[stream open];
// calls to stream's -write:maxLengh:
NSData *data = [stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
printf("%s", [string UTF8String]);
[stream close];
有没有更好的方法来实现这一点?具体来说,我对这种方法有两点不满意:
写入流的数据需要额外的内存
这个流是不可重用的——在我通过
[stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]从这个流中检索数据之后,流不是“重置”的,即我希望后续调用这个方法只给我新数据,但它的不是这样。这意味着我每次写入标准输出后都必须创建一个新的 NSOutputStream。
【问题讨论】:
标签: objective-c cocoa io