我们为什么要声明像
这样的方法- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate;
为什么不喜欢:
-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;"
在Objective-C
中以第一种方式声明方法有什么用??
答案 0 :(得分:2)
我假设您已经知道第二种方法将使用一个参数创建两个方法,而第一种方法创建一个具有两个参数的方法。所以你的问题归结为为什么将多个参数传递给方法。我们这样做是因为为了正确运行该方法,需要两个参数
一个例子:考虑一个NSMutableArray
对象mutableArray
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index
如果我们在mutableArray上调用此方法,我们可以在index-index处插入一个Object。看看这种创建方法的方式起初是多么奇怪,但读得非常好。
如果我们将其分为2种方法
- (void)insertObject:(id)anObject;
- (void)atIndex:(NSUInteger)index;
在这两种情况下,我们只知道要插入的对象或插入的位置。但绝不是两者都是正确插入所需要的。
答案 1 :(得分:0)
好的,你误解了方法及其参数。
- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate;
使用两个参数(可以接收的消息)createBudget
和aBudget
声明anExchangeRate
方法。使用方法是:
[createBudget 1000.00 withExchageRate: 1.5]
第二种方式是宣布两种方法,虽然它可能有效,但是当想法是创建具有声明汇率的预算时,有两种方法有点奇怪。
答案 2 :(得分:0)
第一个函数实际上是一个带有两个参数的函数。
- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate;
您也可以将上述功能声明为
- (void) createBudget: (double) aBudget:(float) anExchangeRate;
两者都可以正常工作但从理解的角度来看,从第一次宣告开始,一个人就可以猜出这个功能是什么。他/她将直接说这个函数采用参数预算和汇率进行操作。
如果我们将变量aBudget
和anExchangeRate
更改为其他内容,那么在第二个声明中,那么没有人可以猜测它将要做什么。
现在为你的第二个功能:
-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;
这里你创建了2个函数,即createBudget
和withExchangeRate
而不是一个。
因此,您将单独调用这些功能意味着当您致电createBudget
时,您只能访问aBudget
而非anExchangeRate
,因为它是在单独的功能中定义的。