Próbuję renderować niektóre widoki w osobnym wątku, aby nie wpływać na główny wątek. To nigdy nie było problemem przed Xcode 9. Teraz moja jednostka testuje awarię tutaj.Xcode 9 [UIView initWithFrame:] musi być używany z głównego wątku tylko
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];
...
}
Dlaczego nie powinienem móc renderować elementów interfejsu do późniejszego wykorzystania w wątku innym niż główny wątek?
byłem świadomy tej nowej reguły, ale zastanawiam się, jak wiele pracy nadal można odciążyć do wątku backgroudn ... –