我试图在一个单独的线程中分配一个UIDatePicker(iPhone 4的性能提升),并且由于某种原因,下面的代码绘制了一个黑框(日期选择器应该去的地方),并且在大约20-之后显示日期选择器30秒。
@property (nonatomic, strong) dispatch_queue_t backgroundQueue;
dispatch_async(self.backgroundQueue, ^{
self.datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, self.deviceRect.size.width, self.datePicker.frame.size.height)];
[self.datePicker addTarget:self action:@selector(didSelectDate:) forControlEvents:UIControlEventValueChanged];
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:self.datePicker];
});
});
我知道线程代码有效,因为我添加了一个冗长的进程,并在完成后添加了一个UIView,并且所有内容都按预期显示。我想这样做的原因是因为在iPhone 4上UIDatePicker第一次显示时会滞后。你可以通过转到Apple日历应用程序并添加日期来看到这一点,在显示UIDatePicker之前会有明显的延迟。