NSInputStream *inputStream
ネットワーク接続から小さな JSON オブジェクトを受信しています。次のようにストリームをバッファに読み取った場合:
NSError *err = nil;
uint8_t buffer[1024];
NSMutableData *data = [[NSMutableData alloc] init];
while ([inputStream hasBytesAvailable]) {
int const len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (0 < len) {
[data appendBytes:buffer length:len];
}
}
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];
次に、期待する JSON を取得します。しかし、これは、読み取る JSON オブジェクトが 1 つだけあると想定しているため、非常に脆弱です。このスキームでは、 をデシリアライズしようとしてしまう可能性が{"cheese":17}{"ch
ありますが、これは明らかに無効です。むしろ使いたい
NSError *err = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithStream:inputStream options:0 error:&err];
しかし、デバッガーを使用して、この最後の行が返されず、エラーがログに記録されないことを発見しました! 正しいアプローチは何ですか?