j'ai un protocole Objective-C:redéclarant/Extension typedef défini dans le protocole Objective-C dans la classe conforme au protocole
typedef enum {
ViewStateNone
} ViewState;
@protocol ViewStateable
- (void)initViewState:(ViewState)viewState;
- (void)setViewState:(ViewState)viewState;
@end
J'utilisant ce protocole dans la classe suivante:
#import "ViewStateable.h"
typedef enum {
ViewStateNone,
ViewStateSummary,
ViewStateContact,
ViewStateLocation
} ViewState;
@interface ViewController : UIViewController <ViewStateable> {
}
@end
Je n'irai pas trop loin dans les détails de mon application, mais ce que je fais ici est typedef
une énumération dans un protocole afin que les méthodes du protocole puissent prendre une valeur d'entrée de ce type. Je souhaite ensuite redéclarer ou étendre ce typedef dans les classes conformes à ce protocole, afin que chaque classe puisse avoir ses propres états d'affichage. Cependant, je suis en cours d'exécution dans les deux erreurs suivantes:
Redeclaration of enumerator 'ViewStateNone'
Conflicting types for 'ViewState'
J'ai honte d'admettre que ma connaissance de C (à savoir typedef
s) n'est pas exhaustive, si est ce que j'essaie de faire ici, d'une part, possible et, d'autre part, sensible?
Acclamations d'amis.
Merci pour une réponse très claire et réfléchie Williham. Fondamentalement, j'ai x nombre de vues, avec x nombre d'états, tout étant géré par un contrôleur central. En faisant abstraction du changement d'état, j'espérais initialiser et basculer de nombreux états de vue vers l'extérieur avec un seul appel de méthode. Si la technique ci-dessus était possible, je pense qu'elle aurait probablement été remarquablement simple. Hélas, je vais reconsidérer mon design. Merci encore. –