我正在尝试尝试从Objective-C到JavaScript的调用速度。到目前为止,我有以下代码
- (IBAction)didTapUpdateWebView:(id)sender {
int hits = 30;
CFTimeInterval startTime = CFAbsoluteTimeGetCurrent();
NSLog(@"time before: %f", startTime);
for (int i = 0; i < hits; i++) {
NSString *str=[self.fNameTextField.text stringByAppendingFormat:@"%d", i];
NSString *jsCommand = [NSString stringWithFormat:@"setFirst('%@')", str];
NSString *ret=[self.webView stringByEvaluatingJavaScriptFromString:jsCommand];
NSLog(@"sent %@", ret);
[self updateNativeNameValuesWithFirstName:str];
// trying to refresh the view but none of these work
[self.view.layer setNeedsDisplay];
[self.view.layer setNeedsLayout];
[self.view layoutSubviews];
[self.view.layer displayIfNeeded];
// sleep for a bit so change is visible
[NSThread sleepForTimeInterval:0.1];
}
CFTimeInterval finishTime = CFAbsoluteTimeGetCurrent();
float delta = finishTime - startTime;
NSString *result =[NSString stringWithFormat: @"alert('%d hits took %f seconds')", hits, delta];
[self.webView stringByEvaluatingJavaScriptFromString:result];
}
我希望在每次循环迭代后看到UI更新。但是,似乎循环在后台执行,并且在循环完成并且警报被丢弃之前没有可见的变化。如何确保在每次循环迭代后更新UI?