我正在学习开发一个IOS应用程序.我有以下问题.我想用标签来显示一个字符串.此字符串显示需要很长时间(10-15秒).这是正常的吗?以下代码位于viewDidLoad函数中
NSLog(self.example); //displays almost immediately
_labelOutput.text= [NSString stringWithFormat:@"%@", self.example;//takes 15 seconds
Run Code Online (Sandbox Code Playgroud)
整个viewDidLoad函数:
- (void)viewDidLoad
{
[super viewDidLoad];
double lat = 43.7000;
double lon = -79.4000;
NSArray *users = [[NSArray alloc] initWithObjects:@"user_1",@"user_2",@"user_3", nil];
id prediction = [[Prediction alloc] initWithUsers:users Lat:lat Lon:lon];
[prediction populate:^{
self.resName= [prediction generateRandom][@"id"];
NSLog([NSString stringWithFormat:@"%@", self.resName]);
_labelOutput.text= [NSString stringWithFormat:@"%@", self.resName];
}];
}
Run Code Online (Sandbox Code Playgroud)
什么是-[Prediction populate:]与块呢?我的猜测是它在后台线程或队列上运行块.您不能从后台线程或队列修改UI.您的应用可能会崩溃或只是无法预测.你更新屏幕的神秘延迟是这个错误的常见症状.
您只能从主线程或队列修改UI.试试这个:
[prediction populate:^{
self.resName= [prediction generateRandom][@"id"];
NSLog([NSString stringWithFormat:@"%@", self.resName]);
dispatch_async(dispatch_get_main_queue(), ^{
_labelOutput.text= [NSString stringWithFormat:@"%@", self.resName];
});
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |