Xcode [UIView initWithFrame:] doit être utilisé à partir du thread principal uniquement

J'essaie de rendre certains points de vue dans un thread séparé pour ne pas affecter le thread principal. Qui n'a jamais été un problème avant de Xcode 9. Maintenant, mes tests unitaires crash ici.

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];
    ...
}

Pourquoi devrais-je pas être en mesure de rendre des éléments de l'INTERFACE utilisateur pour une utilisation ultérieure dans un thread autre que le thread principal?

source d'informationauteur Lukas Würzburger | 2017-09-22