我正在后台线程中运行数学计算。尝试在 UITextView 中实时发布结果。但是,在后台线程完成之前,结果不会显示。为什么不?
我在后台启动一个方法,
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^() {
[self v2];
});
后台线程方法的形式是,
- (void) v2 {
NSString *result;
// ... loop a bunch of times generating lots of results
for (bunch of stuff to compute) {
// If using dispatch_async, nothing is displayed until this method finishes
// If dispatch_sync then it does display and update
result = [self computeNextValue];
dispatch_async(dispatch_get_main_queue(), ^() {
textView.text = result;
});
} // end computation
}
在我开始尝试滚动视图之前,这实际上并不是什么大问题。痛苦的慢。所以我创建了一个 NSTimer 来定期滚动 UITextView。但是,即使计时器弹出并运行该方法来请求滚动,UITextView 也不会滚动,直到后台方法完成。