问题出在这里:我有一些像这样的代码

otherWinController = [[NotificationWindowController alloc] init];
for (int i = 0; i < 10; i++) {
    [otherWinController showMessage:[NSString stringWithFormat:@"%d", i]];
    NSLog(@"%d", i);
    sleep(1);
}


其中otherWinController是NSWindowController的子类,当代码发生更改时,我使用它来更新窗口,而alloc init方法只是打开笔尖并显示窗口。 showMessage是一种更改NSTextView以显示参数中任何文本的方法。

在NSLog中,文本每秒更改一次,仅计数到十。但是对于showMessage方法,该文本在整整十秒钟内都是空白,然后仅显示数字10。有什么想法吗?

FTR,showMessage方法很简单

- (void)showMessage:(NSString *)text {
[[self message] setStringValue:text];
}


没关系,这很基本。

最佳答案

如果您明确给运行循环一些时间来运行,则可能可以在循环内部实现所需的效果:

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 0.1]];

关于objective-c - NSTextField等待直到循环结束进行更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5829977/

10-09 12:44