我过去用过typedef enum方法参数并没有问题,但今天我遇到了问题...
h文件
typedef enum
{ eGetVarious1,
eGetVarious2,
} eGetVarious;
- (double)getVarious:(eGetVarious)eVar:(NSDate*)pDate;
Run Code Online (Sandbox Code Playgroud)
一个m文件

你正在调用一个类方法,并声明一个实例方法:
实例方法:
- (double)getVarious:(eGetVarious)eVar:(NSDate*)pDate;
Run Code Online (Sandbox Code Playgroud)
类方法(可能不使用ivars或实例方法):
+ (double)getVarious:(eGetVarious)eVar:(NSDate*)pDate;
Run Code Online (Sandbox Code Playgroud)
假设您希望将此作为实例方法,请按以下方式声明:
- (double)getVarious:(eGetVarious)eVar forDate:(NSDate*)pDate;
Run Code Online (Sandbox Code Playgroud)
如果你在实例方法的实现范围内,那么这应该工作:
double result = [self getVarious:eGetVarious1 forDate:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)
请注意编译器报告错误的原因:
如果它没有看到特定的objc选择器并且你使用它,它假定未声明的选择器的参数采用id(匿名objc对象).
另外,不应将枚举类型提升为指针(虽然没问题0).因为编译器没有办法匹配你正在调用的东西:[objc_class* getVarious:eGetVarious<enum_type> :NSDate*]它是对的,因为你应该把它称为:
General * anInstanceOfGeneral = /* something here */;
NSDate * date = /* something here */;
double result = [anInstanceOfGeneral getVarious:eGetVarious1 forDate:date];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4080 次 |
| 最近记录: |