に表示するsize_t
変数がありますNSLog
。この変数には、送信されたバイト数が含まれます。
これを使用する場合:NSLog(@"%zu",myvariable);
エラーメッセージは表示されませんが、数値がオーバーフローし、NSLog出力に32.768未満の数値が表示され続けます。何故ですか?-9,223,372,036,854,775,808から9,223,372,036,854,775,807までの値の範囲の値を表示することになっていますか?
ここにいくつかのコードがあります。NSlog self.bufferOffsetに表示したいのですが、これは送信されたバイトのおおよその量である必要があります。
// If we don't have any data buffered, go read the next chunk of data.
if (self.bufferOffset == self.bufferLimit) {
NSInteger bytesRead;
bytesRead = [self.fileStream read:self.buffer maxLength:kSendBufferSize];
if (bytesRead == -1) {
[self stopSendWithStatus:@"File read error"];
} else if (bytesRead == 0) {
[self stopSendWithStatus:nil];
} else {
self.bufferOffset = 0;
self.bufferLimit = bytesRead;
}
}
// If we're not out of data completely, send the next chunk.
if (self.bufferOffset != self.bufferLimit) {
NSInteger bytesWritten;
bytesWritten = [self.networkStream write:&self.buffer[self.bufferOffset] maxLength:self.bufferLimit - self.bufferOffset];
assert(bytesWritten != 0);
if (bytesWritten == -1) {
[self stopSendWithStatus:@"Network write error"];
} else {
self.bufferOffset += bytesWritten;
}
}
NSLog (@"%lu",self.bufferOffset);
そしてここに出力のいくつかがあります:
2013-02-24 15:54:39.674 prog[298:303] 32768
2013-02-24 15:54:39.728 prog[298:303] 4820
2013-02-24 15:54:39.791 prog[298:303] 10820
2013-02-24 15:54:39.853 prog[298:303] 16580
2013-02-24 15:54:39.911 prog[298:303] 23780
2013-02-24 15:54:39.965 prog[298:303] 28100
2013-02-24 15:54:40.024 prog[298:303] 32768
2013-02-24 15:54:40.080 prog[298:303] 6852
2013-02-24 15:54:40.139 prog[298:303] 14052
2013-02-24 15:54:40.197 prog[298:303] 18372