正如bbum 在这里指出的那样,该文档说:“在大多数情况下,UIKit 类只能从应用程序的主线程中使用这对于派生类 UIResponder 尤其如此,或者在任何情况下都涉及对应用程序用户界面的操作方式。 ”
我以为我明白绘图的方法不能在后台线程中调用,因此可以在后台完成创建,因为 drawRect 方法仅在添加视图时调用。但也许我错了。
总之,这种代码有风险吗?
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *fileName = [pathToModel stringByAppendingPathComponent:[[compDico valueForKey:@"fileName"] lastPathComponent]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:
fileName]];
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(10, 62, 190, 20)];
[label setText:[[someArray objectAtIndex:i-1] someText]];
[label setNumberOfLines:0];
label.font=[UIFont fontWithName:@"arial" size:10.0f];
[label setBackgroundColor:[UIColor clearColor]];
// Create some other view here
// ...
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:imageView];
[self.view addSubview:label];
//Add other view here
// ...
});
});
提前感谢您的回复!