我正在尝试学习objective-c,并对此方法有疑问:
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}
根据documentation,方法名称为tableView:cellForRowAtIndexPath:
,它需要2个参数,表视图和索引路径。它返回指向UITableViewCell
的指针。
因此,(UITableViewCell *)
表示返回类型,但我不明白为什么tv参数出现之前 cellForRowAtIndexPath方法名称。它看起来像我们这里有的是返回类型,然后是param1,然后是方法名称,然后是param2。
我真的还在尝试理解基本的Objective-c语法,所以任何帮助都会受到赞赏。感谢。
答案 0 :(得分:4)
方法名称为tableView:cellForRowAtIndexPath:
,所有这些都不仅仅是cellForRowAtIndexPath:
开头的-
表示它是一个实例方法,如果它是一个类方法,它将是+
。例如,当您alloc
一个对象时,alloc
是一个类方法。
返回类型位于第一个括号内。如果方法没有返回任何内容,则括号将包含void
。
然后是方法名称的第一部分,这是在返回类型的右括号和第一个冒号之间。如果方法没有参数,则没有冒号。
冒号后第一个参数的类型在括号内。
括号后面立即出现第一个参数的名称。
在空格之后,方法名称以相同的方式继续。
答案 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;
。如果您使用上述声明函数,例如在头文件中,您可以在没有问题的情况下更改实现中的参数名称。所以这些只是为了方便。