0

我在使用 Protobuf 的 Objective-C 端口写入 CodedOutput 流时遇到问题:

    POPMessage_Builder* builder = [[POPMessage_Builder alloc] init];
    [builder setPayload:@"Hello, world!"];
    POPMessage* message = [builder build];

    NSOutputStream* rawOutput = [NSOutputStream outputStreamToMemory];

    PBCodedOutputStream* os = [PBCodedOutputStream streamWithOutputStream:rawOutput];
    [message writeToCodedOutputStream:os];
    [os flush];

    NSData* data = [rawOutput propertyForKey:NSStreamDataWrittenToMemoryStreamKey];

    NSLog(@"%@", data);

最后数据始终为空。我已经尝试向它写入各种东西,但似乎 PBCodedOutputStream 似乎从未写入 nsoutputstream。

有没有人有这方面的经验?

4

1 回答 1

1

我只花了几个小时调试这个确切的问题。

[rawOutput open];

来自 Apple Notes:必须先打开流,然后才能使用它。

PS - 他们对设计一个必须在使用前打开的内存流非常有帮助。当您尝试写入未打开的流时,streamError 属性为 null。

于 2013-05-29T02:13:32.160 回答