メインスレッドに影響しないように、別のスレッドでいくつかのビューをレンダリングしようとしています。これはXcode 9以前は問題ではありませんでした。ここで私のユニットテストがクラッシュします。Xcode 9 [UIView initWithFrame:]メインスレッドのみから使用する必要があります
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *snapShot = [self generateShadowImage];
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = snapShot;
});
});
...
- (UIImage *)generateShadowImage {
// It crashes here:
UIView *shadowView = [[UIView alloc] initWithFrame:CGRectZero];
...
}
後でメインスレッド以外のスレッドで使用するためにUI要素をレンダリングできないのはなぜですか?
私はこの新しい規則を知っていましたが、あなたはまだバックグラウンドのスレッドにオフロードできる作業がどれくらいかと思います... –