的论点我有一个方法是这样的:或声明的方法
-(void)exampleSend:(NSString *)gateway byParams:(NSDictionary *)params{
...
}
现在我想改变params
,这是一个输入参数,以同时支持NSDictionary
和NSArray
东西。我如何在objective-c中做到这一点?
的论点我有一个方法是这样的:或声明的方法
-(void)exampleSend:(NSString *)gateway byParams:(NSDictionary *)params{
...
}
现在我想改变params
,这是一个输入参数,以同时支持NSDictionary
和NSArray
东西。我如何在objective-c中做到这一点?
类型更改为id
而不是NSDictionary
,并确保你应该如果NSDictionary
或NSArray
执行它的任何类的具体行动之前,你的方法内部检查,否则会导致系统崩溃。
-(void)exampleSend:(NSString *)gateway byParams:(id)params{
if([params isKindOfClass:[NSDictionary class]]){
}else{
}
...
}
Objective-C不支持将两种不同的数据类型传递给同一个参数。使用id
是一种选择(根据其他答案的意见,您似乎不喜欢)。
另一种选择是有两种方法。像下面这样:
-(void)exampleSend:(NSString *)gateway byParamsDictionary:(NSDictionary *)params{
...
}
-(void)exampleSend:(NSString *)gateway byParamsArray:(NSArray *)params{
...
}
这就像这两个方法会有一些共同的代码。把这个通用代码放到第三个方法中,并根据需要调用这两个方法。这两种方法中的代码应该特定于处理两种不同的参数类型。
使用'id'或引入自己的数据类型。 – shallowThought