私はソケットを使って作業していて、単に文字列をソケットに書き込もうとしています。次の例(oStreamはNSOutputStream
)のように、これを行う方法についていくつかの例を見つけました。これはすべて内にありNSStreamEventHasSpaceAvailable
ます。
uint8_t buffer[11] = "I send this";
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];
それはうまくいきます。そこで、NSStringからバイトを取得してカスタマイズできるように変更してみました。
int len;
NSString* strId;
strId = @"string will be customized with several lines of code here";
uint8_t buffer[[strId lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];
[strId getBytes:buffer maxLength:sizeof(buffer) usedLength:NULL encoding:NSASCIIStringEncoding options:NULL range:NSRangeFromString(strId) remainingRange:NULL];
len = [oStream write:buffer maxLength:sizeof(buffer)];
これはまったく機能していません。完全なジブリッシュをバッファ(おそらくバイト)に書き込み、「getBytesの引数5を渡すと、キャストなしでポインタから整数になる」というgetBytes行の警告が表示されます。
申し訳ありませんが、これまでに質問されたことがありますが、検索しても答えが見つかりませんでした。問題の修正は非常に簡単なはずです。ありがとう!
編集: うまくいくように見えるものを見つけましたが、それがこのようなものの適切なプログラミングであるかどうかはわかりません。以下の回答をご覧ください。この状況で使用するのは危険なコードですか?