Objective-C中的方法声明

时间:2011-12-28 10:17:20

标签: objective-c

我们为什么要声明像

这样的方法
- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate; 

为什么不喜欢:

-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;" 

在Objective-C

以第一种方式声明方法有什么用??

3 个答案:

答案 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;

使用两个参数(可以接收的消息)createBudgetaBudget声明anExchangeRate方法。使用方法是:

  [createBudget 1000.00 withExchageRate: 1.5]

第二种方式是宣布两种方法,虽然它可能有效,但是当想法是创建具有声明汇率的预算时,有两种方法有点奇怪。

答案 2 :(得分:0)

第一个函数实际上是一个带有两个参数的函数。

- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate; 

您也可以将上述功能声明为

- (void) createBudget: (double) aBudget:(float) anExchangeRate;

两者都可以正常工作但从理解的角度来看,从第一次宣告开始,一个人就可以猜出这个功能是什么。他/她将直接说这个函数采用参数预算和汇率进行操作。

如果我们将变量aBudgetanExchangeRate更改为其他内容,那么在第二个声明中,那么没有人可以猜测它将要做什么。

现在为你的第二个功能:

-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;

这里你创建了2个函数,即createBudgetwithExchangeRate而不是一个。 因此,您将单独调用这些功能意味着当您致电createBudget时,您只能访问aBudget而非anExchangeRate,因为它是在单独的功能中定义的。