Я настроил NSNotification для NSFileHandleReadCompletionNotification
.
Я настроил стандартный ввод / вывод с двумя отдельными каналами.
NSPipe * input = NSPipe.new;
NSPipe * output = NSPipe.new;
[serverTask setStandardInput:input];
[serverTask setStandardOutput:output];
Я запускаю NSTask, выполняющий Java jar,и начинаю читать данные.
[[serverTask.standardOutput fileHandleForReading] readInBackgroundAndNotify];
, и я постоянно читаю данные и добавляю данные в NSTextView
, если это новые данные:
- (void)serverLogHasChanged:(NSNotification *)notification
{
[[serverTask.standardOutput fileHandleForReading] readInBackgroundAndNotify];
NSData * newData = [notification.userInfo objectForKey:NSFileHandleNotificationDataItem];
if (newData != nil && availableData != newData)
{
NSMutableString * serverLogString = [NSMutableString stringWithString:serverLog.string];
[serverLogString appendString:[NSString.alloc initWithData:newData encoding:NSUTF8StringEncoding]];
[serverLog setString:serverLogString];
[serverLog.enclosingScrollView.contentView scrollPoint:NSMakePoint(0, NSMaxY(serverLog.enclosingScrollView.contentView.bounds))];
}
newData = availableData;
}
Однако я получаю странный вывод в NSTextView
Эти символы ">" должны быть строками реального вывода, но вместо этого вывод заканчивается в консоли Xcode.
Другими словами, консоль печатает вывод вместо моего NSPipe
, который печатает только индикацию новых строк вывода.