2

我在我的视图控制器中使用了一个自定义协议,其中一个必需的方法采用称为 PunchState 的 NS_ENUM 类型。

#import "globals.h"

@protocol PunchViewControllerDelegate <NSObject>

-(void) punchViewDidChangeState:(PunchState) newState;
-(void) punchViewDidChangeTimerStartTimeTo:(CFAbsoluteTime) newTime;

@end

PunchState 像这样在 globals.h 中定义...

typedef NS_ENUM(NSInteger, PunchState)
{
    PunchStateStarting =1,
    PunchStateWorking,
    PunchStateBreaking,
    PunchStateLunching,
    PunchStateEnding,
};

问题是,每当我尝试在我的委托中使用创建协议方法时,它都会将其从协议中声明的PunchState变量更改为这样的id

- (void)punchViewDidChangeState:(id)newState
{
    self.currentState = (PunchState) newState;
}

现在它将按原样工作,但我想知道为什么我不能只使用它:

- (void)punchViewDidChangeState:(PunchState)newState
{
    self.currentState = (PunchState) newState;
}

每当我尝试时,我都会收到问题中的错误。任何想法或见解将不胜感激。

4

0 回答 0