J'ai déclaré une énumération dans mon fichier d'implémentation comme indiqué ci-dessous, et déclaré une variable de ce type dans mon interface en tant que PlayerState thePlayerState; et utilisé la variable dans mes méthodes. Mais j'obtiens des erreurs indiquant que ce n'est pas déclaré. Comment déclarer et utiliser correctement une variable de type PlayerState dans mes méthodes?:
Dans le fichier .m
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
dans le fichier .h:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
dans une méthode dans un fichier .m:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
la source
la source
Réponses:
Vous
typedef
devez être dans le fichier d'en-tête (ou dans un autre fichier qui est#import
inséré dans votre en-tête), car sinon le compilateur ne saura pas quelle taille créer l'PlayerState
ivar. A part ça, ça me va.la source
NS_ENUM
les énumérations en Objective-C si vous voulez que votre énumération soit disponible en code Swift.typedef
déclaré dans le.m
fichier et il se compile et fonctionne bien.Apple propose une macro pour améliorer la compatibilité du code, y compris Swift. L'utilisation de la macro ressemble à ceci.
Documenté ici
la source
NS_ENUM
), car elle est plus moderne et est désormais requise en Objective-C si vous souhaitez que votre énumération soit disponible en code Swift.Dans le .h:
la source
Avec les projets en cours, vous souhaiterez peut-être utiliser les macros
NS_ENUM()
ouNS_OPTIONS()
.la source
NS_ENUM
les énumérations en utilisant Objective-C si vous voulez que votre énumération soit disponible en code Swift.Voici comment Apple le fait pour des classes comme NSString:
Dans le fichier d'en-tête:
Reportez-vous aux directives de codage sur http://developer.apple.com/
la source
Je recommande d'utiliser NS_OPTIONS ou NS_ENUM. Vous pouvez en savoir plus ici: http://nshipster.com/ns_enum-ns_options/
Voici un exemple de mon propre code utilisant NS_OPTIONS, j'ai un utilitaire qui définit une sous-couche (CALayer) sur la couche d'un UIView pour créer une bordure.
Le H. fichier:
Le fichier .m:
la source