Can someone explain function names in Objective-C?
Possible Duplicate:
Method Syntax in Objective C
所以我得到了更常见的功能,比如:
1 2 3 4 5 | -(void)viewDidUnload{ self.controllers = nil; [super viewDidUnload]; } |
然而,由于来自不同的编程背景,我有时会遇到如下问题:
1 2 3 4 5 6 | -(NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.controllers count]; } |
所以我知道函数返回一个nsinteger。然而,在如何在精神上组织函数名的其余部分等方面,我确实有点困惑。我需要能够可视化一些结构。在这种情况下,函数名是numberofrowspeagon,参数是section吗?
在这件事上给予帮助将不胜感激。
您可以通过查看
1 | [object action:var withFoo:baz] |
作为
1 | object."action:withFoo:"(var, baz) |
冒号前的所有内容都是方法名的一部分,冒号后的所有内容都是参数,因此方法名与传递给方法的参数交错。
是的,Objective-C将参数与方法名的某些部分混合的方式一开始看起来很奇怪。在这方面,每个人都经历了一个短暂的调整期。但是给它一点时间——过了一会儿,你可能再也不想看到一个用逗号分隔、用括号括起来的无名参数列表了。
在C++中,你会说:
1 | Color *color = new Color(0.5, 0.7, 0.2, 0.8); |
你知道这些价值观是什么意思吧?其中有四个参数,所以很明显参数是红、绿、蓝、α顺序。还是阿尔法,红色,绿色,蓝色?当然,它也可以是色调,饱和度,值,alpha…好吧,这并不重要,因为你可以随时查看它。
在目标C中,你说:
1 | UIColor *color = [[UIColor alloc] initWithRed:0.5 green:0.7 blue:0.2 alpha:0.8]; |
那不是更好吗?您仍然需要不时地查阅文档,以准确地提醒自己一个方法做了什么,或者一个类提供了什么方法。但是,您不会经常发现自己只是为了找出哪个参数去哪里而咨询文档。
目标C有一种描述性的写作方法。
1 | -(NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section{} |
它是一个方法tableview,返回nsinteger,接受两个参数-一个uitableview引用和一个integer部分。现在考虑将numberofrowspeagon作为参数的描述。
1 | -(NSInteger) calculateSum:(NSInteger)operand1 secondOperand:(NSInteger)operand2 andThirdOperand:(NSInteger)operand3{} |
我可以把这些方法称为[自计算和:var1第二操作数:var2和hirdoperand:var3];
这里"secondoperand"和"andthirdoperand"不是必需的,我可以把上面的方法写成
1 | -(NSInteger) calculateSum:(NSInteger)operand1 :(NSInteger)operand2 :(NSInteger)operand3{} |
并将此方法称为
1 | [self calculateSum:var1 :var2 :var3]; |
但是第一个很容易阅读,如果你告诉每个变量是什么,希望这有帮助。
另请看,我使用了单词method而不是通常的目标c方法的函数。
是的,基本上就是这样。在obj-c中,完整的方法名包括参数名。我相信这项公约起源于斯莫尔脱口秀。
这是一个接受2个参数、一个UITableView和一个NSinteger的方法。它不是这样写的: