gpt4 book ai didi

cocoa - 如何从线程使用 NSTextView 作为日志控制台?

转载 作者:行者123 更新时间:2023-12-03 16:27:16 25 4
gpt4 key购买 nike

我正在运行另一个处理线程,我想将结果记录到NSTextView,当发布新行时,它会更新 View 并将滚动条定位到底部。有什么建议吗?

- (void)runProc
{
do {
[NSThread sleepForTimeInterval:0.1];
[self reportInfo:@"tick"];
} while (stop == NO);
}

- (void)report:(NSString*)string;
{
[[consoleView textStorage] beginEditing];
[[[consoleView textStorage] mutableString] appendString:string];
[[[consoleView textStorage] mutableString] appendString:@"\n"];
[[consoleView textStorage] endEditing];

NSRange range;
range = NSMakeRange ([[consoleView string] length], 0);

[consoleView scrollRangeToVisible: range];
}

它大约有 50 个条目,然后将整个内容锁定。

最佳答案

大多数 AppKit 都不是线程安全的,您无法从辅助线程更新 NSTextView。所有 UI 更新都必须在主线程上完成。

您需要像这样调用报告方法:

[self performSelectorOnMainThread:@selector(report:) withObject:@"tick" waitUntilDone:YES];

关于cocoa - 如何从线程使用 NSTextView 作为日志控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8533899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com