Le @property est dans une catégorie. On peut donc tenter le @synthesize a deux endroits : dans le @implementation original, dans ce cas là il dit qu'il ne trouve pas de @property du même nom, ou dans une catégorie, et dans ce cas là , il dit que le @synthesize n'est pas permis dans les catégories : "@synthesize not allowed in a category's implementation".
Le @property est dans une catégorie. On peut donc tenter le @synthesize a deux endroits : dans le @implementation original, dans ce cas là il dit qu'il ne trouve pas de @property du même nom, ou dans une catégorie, et dans ce cas là , il dit que le @synthesize n'est pas permis dans les catégories : "@synthesize not allowed in a category's implementation".
Ah, merci. J'aurais pas utilisé une "simple" catégorie mais plutôt dans une extension placée directement dans le fichier d'implémentation principal.
Comme dans la suggestion de Dilaroga:
dans 1258042555:
../... L'implémentation des propriétés en objective-C 2 permet de réaliser assez finement ses choix de conception. On peut par exemple definir une propriété readonly dans l'interface publique d'une classe et la redefinir en readwrite dans une extension de cette même classe (interface privée) : interface :
Ainsi tu auras un getter public et un setter privé.
On peut encore réécrire le corps des setter/getter en utilisant le mot clé @dynamic en lieu et place de @synthesize.
Mais sans déclarer l'iVar [tt]maPropriete[/tt] ni la propriété dans le header.
Mais le résultat decrait être le même si on considère qu'une extension est une catégorie "anonyme". Le @synthesize ne passerait puisqu'il impose au compilo de générer également l'iVar en plus des accesseurs....
Ah, merci. J'aurais pas utilisé une "simple" catégorie mais plutôt dans une extension placée directement dans le fichier d'implémentation principal.
Comme dans la suggestion de Dilaroga:
(...)
Mais sans déclarer l'iVar [tt]maPropriete[/tt] ni la propriété dans le header.
Mais le résultat decrait être le même si on considère qu'une extension est une catégorie "anonyme". Le @synthesize ne passerait puisqu'il impose au compilo de générer également l'iVar en plus des accesseurs....
En fait, je pensais que les extensions étaient comme des catégories anonymes, mais non.
Je viens de tester le code suivant, et ça fonctionne sans problème :
Réponses
Ah! Merci
Honnêtement j'avais un léger doute et n'ai pas testé.
Mais la doc ne fait nullement mention de cette limitation ...
P.S. T'as un message d'erreur à la compilation ? lequel ?
Ah, merci.
J'aurais pas utilisé une "simple" catégorie mais plutôt dans une extension placée directement dans le fichier d'implémentation principal.
Comme dans la suggestion de Dilaroga:
Mais sans déclarer l'iVar [tt]maPropriete[/tt] ni la propriété dans le header.
Mais le résultat decrait être le même si on considère qu'une extension est une catégorie "anonyme".
Le @synthesize ne passerait puisqu'il impose au compilo de générer également l'iVar en plus des accesseurs....
Mais bon, c'est pas mon but non plus, j'suis pas parano du tout je voulais juste attirer l'attention sur la portée des properties
En fait, je pensais que les extensions étaient comme des catégories anonymes, mais non.
Je viens de tester le code suivant, et ça fonctionne sans problème :
Voilà un test qui est intéressant ! ça marche
On peut donc créer des variables d'instance dans une extension, en passant par les properties et @synthetize !!!
Merci ThibautÂ
ça concerne aussi le Développement Mac SDK !
Mais que fait donc l'admin ?
Et que fait donc Ali ? sa mise au point du début devrait déjà être dans les articles de fond ;D
(Pile poil au pbt)