J'ai essayé de mettre cela dans le fichier d'en-tête de mon objet de vue:
@property (nonatomic) UIColor color;
pour stocker la couleur avec laquelle les lignes doivent être dessinées dans cette vue.
Xcode me donne une erreur sur cette ligne:
Le type d'interface ne peut pas être alloué statiquement
Qu'est-ce que cela signifie et que dois-je faire?
ÉDITER:
J'ai ajouté un *, et au point de synthèse, il a dit:
ARC interdit de synthétiser une propriété d'un objet Objective C avec une propriété ou un attribut de stockage non spécifié?
Votre variable est pour un type d'objet, et en tant que telle doit être déclarée comme un pointeur:
@property (nonatomic) UIColor * color; // Note the asterisk
"Alloué statiquement" dans ce cas signifierait que la mémoire de cet objet a été allouée au moment de la compilation. Cependant, tous les objets dans Obj-C sont alloués au moment de l'exécution et accessibles via des pointeurs.
"Type d'interface" est une sorte de terme trop technique qui a du sens pour le compilateur, et qui n'est pas terriblement important ici. Cela signifie que UIColor
représente l'interface à travers laquelle le compilateur attend de vous que vous interagissiez avec la variable color
. Le type réel de l'objet pointé peut être différent (comme avec un cluster de classes comme NSString
).
Le problème est que vous ne pouvez accéder aux objets Objective-C que par référence via des pointeurs, comme ceci:
UIColor *color;
vous ne pouvez pas avoir un objet "nu", comme ceci:
UIColor color;
La solution consiste donc à insérer l'astérisque dans votre code (ce que vous vouliez probablement faire, et le bogue n'est qu'une faute de frappe).
Vous devez déclarer un pointeur UIColor
comme ceci et ajouter retenir/fort selon que vous utilisez ARC ou MRR:
@property (nonatomic, strong) UIColor *color;