グランドセントラルディスパッチ(GCD)に頭を悩ませようとしていますが、答えが見つからないようです。
したがって、一般的に、メインスレッド以外のスレッドからUIView要素を更新することは想定されていません。したがって、これは違法です。
dispatch_async(workerQueue, ^{
self.view.backgroundColor = [UIColor redColor];
});
しかし、実際にビューに追加される前に、ビュー要素で作業することは許可されていますか?言い換えれば、これは許可されていますか?
dispatch_async(workerQueue, ^{
UIButton *thisLevelButton = [UIButton buttonWithType:UIButtonTypeCustom];
thisLevelButton.frame = CGRectMake(x, y, BUTTON_WIDTH, BUTTON_HEIGHT);
thisLevelButton.tag = kLevelButtonTags + j;
int levelState = [[[thisCat objectForKey:[levelNamesInCat objectAtIndex:j]] objectAtIndex:4] intValue];
[thisLevelButton setBackgroundImage:[UIImage imageNamed:@"ccLSButton50lock"]forState:UIControlStateNormal];
thisLevelButton.alpha = 0.5;
[thisLevelButton addTarget:self action:@selector(unlockButtonAction:) forControlEvents:UIControlEventTouchUpInside];
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:thisLevelButton];
}
});