我不了解Objective C方法声明

时间:2014-05-13 11:01:09

标签: objective-c

以下方法声明描述了什么?

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我不明白的是对方法结果的描述:

(UITableViewCell *)tableView:(UITableView *)tableView 

它应该只返回一个结果,但显然它返回两个。怎么样?

2 个答案:

答案 0 :(得分:3)

实际上只有一个返回值(结果)。

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
C ++ / Java中的

将是这样的

UITableViewCell * getTableViewCellForRowAtIndexPath(UITableView *tableView, NSIndexPath *indexPath)

Obj-C中的整个方法名称是-tableView:cellForRowAtIndexPath:。 Obj-C决定使用与句子类似的方法名称。参数就像那句话中的单词。 另请注意,我们通常不会在方法名称的开头使用get

在这种情况下,混淆是可以理解的,因为方法名称不能被理解为句子。

答案 1 :(得分:0)

如果你是初学者,那就没关系。看,你永远不能吃一个字节的披萨,你把它分成小块,以便你可以轻松吃它。

Objective-C已经实现了同样的事实。

考虑一个简单的案例:

假设我们在常规C中定义一个带有5个参数的方法,并且它添加前两个,第一个和第二个参数的结果与第三个参数相乘,其结果除以第4个参数,最后,之前的结果被添加到第五个参数中。

以下是该功能的定义:

float aLittleComplexFunction(int first, int second, int third, int fourth, int fifth) {
    return ((((float)first + second) * third ) / fourth ) + fifth;
}

现在,请注意我不能提出一个好的功能名称,因为它很难。像addTwoNumbersAndThenMultiplyAndThenDivideAndThenAdd这样的函数名称会有点过分。

现在,谈到Objective-C,它分为以下小部分:

float addNumber:(int)first into:(int)second multiplyWith:(int)third divideWith:(int)fourth addWith:(int)fifth {
    return ((((float)first + second) * third ) / fourth ) + fifth;    
}

你问的问题也是如此。请记住,在Objective-C中,函数名称是分开的,每个部分都带有它的相关参数,总体上使得更容易了解函数的实际目的。

你可能觉得很难开始使用它,但是一旦你这样做,你就会讨厌典型的C方式。