The true issue here was that this method was called from a background thread. AppKit is not safe in the background thread, so you should to call all UI updates from the main thread. Placing the setString:
in a main queue asynchronous dispatch fixed the issue:
dispatch_async(dispatch_get_main_queue(), ^(void){
[[self consoleText] setString:outputString];
});
Very odd that it worked fine until a scrollbar needed to appear...