问题出在这里:我有一些像这样的代码
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/