現在、入力ストリームからデータを受け取るアプリケーションを作成しています。このデータはNSString
ポインタ出力に設定されます。NSTextField
現在、出力は通常のウィンドウにしか表示できません。私の現在のコードでは、イベント hasBytesAvailable が true になった場合にのみ、これらの文字列を表示できます。hasBytesAvailable がストリームからデータを返すことができるたびに、NSTextField
完全に置き換えられます。NSTextView
オブジェクトを適切に使用できないようです。NSTextView
hasBytesAvailable イベントが実行されてから情報が返されるので、文字列データを表示するように設定したい。上にスクロールして、送信されているすべての情報を確認できるようにしたいと考えています。
これに関連して私が考えることができる最良の例は、私のアプリケーションがデータを受け入れるクライアントになるチャットサーバー/クライアントですが、それはすべてNSTextView
ウィンドウに保存されます。
ありがとうございました
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
switch (streamEvent) {
case NSStreamEventOpenCompleted:
NSLog(@"Stream opened");
break;
case NSStreamEventHasSpaceAvailable:
NSLog(@"Has space");
break;
case NSStreamEventHasBytesAvailable:
if (theStream == inputStream) {
uint8_t buffer[10000];
long len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
NSLog(@"Has Bytes");
if (nil != output) {
NSLog(@"%@", output);
[window setString:output];
}
}
}
}
break;
case NSStreamEventEndEncountered:
NSLog(@"Error.");
break;
}
}