objective-c语法问题

时间:2011-06-22 00:22:54

标签: objective-c syntax

我正在尝试学习objective-c,并对此方法有疑问:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}

根据documentation,方法名称为tableView:cellForRowAtIndexPath:,它需要2个参数,表视图和索引路径。它返回指向UITableViewCell的指针。

因此,(UITableViewCell *)表示返回类型,但我不明白为什么tv参数出现之前 cellForRowAtIndexPath方法名称。它看起来像我们这里有的是返回类型,然后是param1,然后是方法名称,然后是param2。

我真的还在尝试理解基本的Objective-c语法,所以任何帮助都会受到赞赏。感谢。

2 个答案:

答案 0 :(得分:4)

方法名称为tableView:cellForRowAtIndexPath:,所有这些都不仅仅是cellForRowAtIndexPath:

开头的-表示它是一个实例方法,如果它是一个类方法,它将是+。例如,当您alloc一个对象时,alloc是一个类方法。

返回类型位于第一个括号内。如果方法没有返回任何内容,则括号将包含void

然后是方法名称的第一部分,这是在返回类型的右括号和第一个冒号之间。如果方法没有参数,则没有冒号。

冒号后第一个参数的类型在括号内。

括号后面立即出现第一个参数的名称。

在空格之后,方法名称以相同的方式继续。

enter image description here

答案 1 :(得分:2)

你的描述非常正确。方法的基本语法是

(ReturnObjectType *)someMethodWithInput1:(Input1Type *)input1 
                               andInput2:(Input2Type *)input2
                                andAnInt:(int)input3;

通常,Objective-C没有命名参数,因此冒号左侧的所有内容都是方法名称的一部分。对于这个例子:

- (return_type)instanceMethodWithParameter:(param1_type)param1_varName 
                         andOtherParameter:(param2_type)param2_varName;

方法名称为instanceMethodWithParameter:andOtherParameter;。如果您使用上述声明函数,例如在头文件中,您可以在没有问题的情况下更改实现中的参数名称。所以这些只是为了方便。