我在我的视图控制器中使用了一个自定义协议,其中一个必需的方法采用称为 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;
}
每当我尝试时,我都会收到问题中的错误。任何想法或见解将不胜感激。