Переобъявление/расширение определения типа, определенного в протоколе Objective C в классе, соответствующем протоколу

У меня есть протокол Objective C:

typedef enum {
    ViewStateNone
} ViewState;

@protocol ViewStateable

- (void)initViewState:(ViewState)viewState;
- (void)setViewState:(ViewState)viewState;

@end

Я использую этот протокол в следующем классе:

#import "ViewStateable.h"

typedef enum {
    ViewStateNone,
    ViewStateSummary,
    ViewStateContact,
    ViewStateLocation
} ViewState;

@interface ViewController : UIViewController <ViewStateable> {

}

@end

Я не зайду слишком далеко в специфические особенности моего приложения, но что я делаю, вот typedefлуг перечисление в протоколе так, чтобы методы протокола могли взять входное значение того типа.

Я затем надеюсь повторно объявить или расширить то определение типа в классах, которые соответствуют тому протоколу, так, чтобы каждый класс мог иметь их собственные состояния отображения. Однако я сталкиваюсь со следующими двумя ошибками:

  1. Redeclaration of enumerator 'ViewStateNone'
  2. Conflicting types for 'ViewState'

Я стыжусь признать что мое знание C (а именно, typedefs) не обширно, так то, что я пытаюсь сделать здесь, во-первых, возможный и, во-вторых, разумный?

Друзья аплодисментов.

6
задан David Foster 4 August 2010 в 11:00
поделиться