错误:实现NS_ENUM中的参数类型冲突

时间:2013-10-24 19:55:11

标签: objective-c

我在视图控制器中使用自定义协议,其中一个必需的方法采用名为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;
}

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

0 个答案:

没有答案