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);

最後に、データは常に null です。いろいろ書き込んでみましたが、PBCodedOutputStream が nsoutputstream に書き込めないようです。

誰もこれを経験したことがありますか?

4

1 に答える 1

1

この正確な問題のデバッグに数時間を費やしました。

[rawOutput open];

Apple Notes から: ストリームは、使用する前に開く必要があります。

PS - 使用前に開かなければならないメモリ内ストリームを設計するのに非常に役立ちます。また、開かれていないストリームに書き込もうとすると、streamError プロパティは null になります。

于 2013-05-29T02:13:32.160 に答える