ich ein CABasicAnimation
für shadowPath Eigenschaft nur wurde die Konfiguration und das machte mich neugierig:Brücke Guss erforderlich, inkonsistente Warnung bei dem Versuch, CGPathRef verwenden
shadowAnimation.toValue = (id)newShadowPath.CGPath;
[Anmerkung: shadowAnimation ist ein CABasicAnimation
Objekt und newShadowPath
ist ein UIBezierPath
Objekt]
dies funktioniert und kein Fehler/Warnung ist in Xcode sichtbar. Allerdings, wenn ich, dass wie so schreiben:
CGPathRef test = newShadowPath.CGPath;
shadowAnimation.toValue = (id)test;
Dies wird nicht kompilieren, werfen diese Warnmeldung:
Cast of C pointer type 'CGPathRef' (aka 'const struct CGPath *') to Objective-C pointer type 'id' requires a bridged cast
So erfordert es mich, es zu geben mag:
shadowAnimation.toValue = (__bridge id)test;
Jetzt Warum ist das so? Warum bekomme ich im ersten Beispiel nicht den gleichen Fehler, wenn ich nur (id) newShadowPath.CGPath; ? Wäre es richtig, auch dort __bridge
zu platzieren, ohne dass Xcode Probleme erkennt? Oder fehlt mir, was ist der Unterschied hier?
wow, danke, dass du dich so anstrengst, das zu analysieren. Ich akzeptierte dies als die richtige Antwort, weil es in diese große Länge geht, um genau zu erklären, was vor sich geht. –