Je veux déclarer une énumération personnalisée telle que: comme type pour mon objet: p> mais je suis incertain d'où Je dois mettre la définition de l'énumé - si je le mettais avant le @interface son syntaxiquement incorrect p> p>
3 Réponses :
Si vous mettez vos deux extraits de code dans un fichier dans cette commande, il vous suffit d'ajouter un Ceci donne: P> ; code> à la fin de la déclaration Enum et vous voudrez peut-être envisager d'utiliser une variable ENUM au lieu de Un pointeur à une variable d'énumération. enum menuItemType
{
LinkInternal = 0,
LinkExternal = 1,
Image = 2,
Movie = 3,
MapQuery = 4
};
@interface MenuItem : NSObject {
NSMutableString *menuId;
NSMutableString *title;
enum menuItemType menuType;
NSMutableArray *subMenuItems;
}
Cette réponse est obsolète, utilisez moderne ns_enum code>. Regardez @zedenem Réponse
@ ProCa2.0 - Vous êtes correct, merci d'avoir souligné cela. En effet, tout Objective-C est sur le point d'être obsolète.
@mouviciel a raison, mais je pensais que je vous ferais savoir que ce que vous voulez n'est pas une propriété de classe, quelque chose qui n'est pas pris en charge dans l'objectif-c. Une propriété de classe est en fait une propriété globale définie sur l'objet de classe. Ce que vous pensais était une propriété ancienne (définie sur une instance de la classe).
En outre, ce que votre code montre que vous utilisez simplement une variable d'instance. Les variables d'instance peuvent être transformées en propriétés en ajoutant des méthodes d'accesseur / mutateur comme suit: p> et p> c'est un Raccourci: le compilateur générera les méthodes appropriées pour accéder et modifier la propriété menuType code>. Je ne suis pas sûr à quel point tout cela est utile, mais cela vous aidera à comprendre votre sémantique de l'objectif-C. p> p>
Juste à la mise à jour de cela au cas où quelqu'un trébuche à ce sujet dans notre temps futur.
Depuis Dans ce cas, il ressemblerait à: P> iOS 6 code> / Mac OS X 10.8 Code>, le nouveau ns_enum et ns_options code> Les macros sont le moyen préféré de déclarer des types énumants. P> typedef NS_ENUM(NSInteger, MenuItemType) {
MenuItemTypeLinkInternal = 0,
MenuItemTypeLinkExternal = 1,
MenuItemTypeImage = 2,
MenuItemTypeMovie = 3,
MenuItemTypeMapQuery = 4
};
Était sur le point de vous berlever pour avoir heurté un poste si vieux ... mais sérieusement, c'est génial. Je viens de convertir mon projet actuel. Aimez aussi les ns_options.