[Swift] De la bonne utilisation de _ObjectiveCBridgeable
Bonsoir.
Je m'amuse toujours avec ma petite structure CGAngle.
L'idée est que j'aimerai pouvoir l'utiliser comme un CGFloat et de pouvoir le bridger directement à Objective-C ce qui me permettrait sur une subclasse de CALayer d'avoir une propriété de ce genre: @NSManaged var angle: CGAngle.
J'ai conformé CGAngle au protocol _ObjectiveCBridgeable si bien que let a: AnyObject = CGAngle(M_PI) fonctionne et prouve au passage que le bridging fonctionne.
Si par contre je declare @NSManaged ou même simplement dynamic une propriété de type CGAngle j'ai droit à ces erreur :
error: property cannot be marked dynamic because its type cannot be represented in Objective-C
error: property cannot be marked @NSManaged because its type cannot be represented in Objective-C
note: Swift structs cannot be represented in Objective-C
Or CGFloat est aussi une "Swift struct" et ça n'empêche rien.
CGAngle partage un sacré paquet de lignes de code avec CGFloat (j'ai fait mon marché sur apple/swift) et normalement devrait fonctionner presque pareil.
J'ai fouillé le repo de swift sur Github et je n'ai rien trouvé de probant. Il y a un piège ou une limitation que je ne connais pas ?
Réponses
Oui j'avais vu ce proposal.
Maintenant que j'ai lu le texte en entier je remarque qu'ils parlent de magic bridging en faisant reÌfeÌrence aux type de la stdlib. C'est vraiment dommage qu'ils aient brideÌ ainsi le mécanisme.
Je vais quand même poser la question sur les forums d'Apple sait-on jamais mais je ne me fais pas trop d'illusion.
Edit: J'ai commenceÌ une discussion sur les forums d'Apple j'espère que j'ai été assez clair j'ai toujours un peu du mal à m'exprimer en Anglais meme si je le comprends très bien: https://forums.developer.apple.com/thread/44731