有人可以解释Objective-C中的函数名吗?

时间:2011-04-23 03:09:00

标签: objective-c cocoa

  

可能重复:
  Method Syntax in Objective C

所以我完全得到了更常见的功能,如:

-(void)viewDidUnload{

    self.controllers = nil;
    [super viewDidUnload];
}

然而,来自不同的编程背景,我有时会遇到类似的问题:

-(NSInteger) tableView: (UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{

    return [self.controllers count];

}

所以我知道该函数返回一个NSInteger。但是我对如何在心理上组织其余的函数名称ETC感到困惑。我需要能够想象一些结构。就像在这种情况下一样,函数名称为numberOfRowsInSection,其参数名为section?

对此事的帮助将不胜感激。

5 个答案:

答案 0 :(得分:6)

通过查看

,您可以将其视为其他编程语言
[object action:var withFoo:baz]

作为

object."action:withFoo:"(var, baz)

冒号前的所有内容都是方法名称的一部分,后面的所有内容都是参数,因此方法的名称与传递给方法的参数交错。

答案 1 :(得分:3)

是的,Objective-C首先将方法与部分方法名称混合的方式似乎很奇怪。在这方面,每个人都经历了一个短暂的调整期。但是给它时间 - 过一会儿,你可能不希望再次看到以逗号分隔,带括号的无名参数列表。

在C ++中,你会说:

Color *color = new Color(0.5, 0.7, 0.2, 0.8);

你知道这些价值观意味着什么,对吗?其中有四个,显然参数是红色,绿色,蓝色,alpha顺序。还是阿尔法,红色,绿色,蓝色?当然,它也可能是色调,饱和度,价值,阿尔法......好吧,它并不重要,因为你总能看到它。

在Objective-C中,你说:

UIColor *color = [[UIColor alloc] initWithRed:0.5 green:0.7 blue:0.2 alpha:0.8];

那不是更好吗?你肯定还需要不时地查阅文档,以提醒自己确切的方法是什么,或者一个类提供什么方法​​。但是你不会经常发现自己正在咨询文档只是为了找出哪个参数在哪里。

答案 2 :(得分:1)

Objective C有一种编写方法的描述方式..

-(NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}

这是一个方法tableView,返回一个NSInteger,接受两个参数 - 一个UITableView引用和一个整数部分。现在考虑将numberofRowsInSection描述为参数的全部内容。看看这个例子

-(NSInteger) calculateSum:(NSInteger)operand1 secondOperand:(NSInteger)operand2 andThirdOperand:(NSInteger)operand3{}

我可以称之为 [self calculateSum:var1 secondOperand:var2 andThirdOperand:var3];

这里“secondOperand”和“andThirdOperand”不是必不可少的,我可以把上面的方法写成

-(NSInteger) calculateSum:(NSInteger)operand1 :(NSInteger)operand2 :(NSInteger)operand3{}

并将此方法称为

[self calculateSum:var1 :var2 :var3];

但是第一个很容易阅读,如果你告诉每个变量是什么..希望这有帮助

另见我使用单词方法而不是通常是客观方式的函数。

答案 3 :(得分:0)

(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

这是一个接受2个参数的方法,一个UITableView和一个NSInteger。它的注释如下:-tableView:numberOfRowsInSection:

答案 4 :(得分:0)

是的,基本上就是这样。在obj-C中,完整的方法名称包括arg名称。我认为该惯例源于Smalltalk。