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