您的位置:首页 > 移动开发 > Objective-C

IOS:Objective-C中奇特的方法声明语法理解

2013-07-14 16:37 295 查看
//下面的语法真的很奇特,按Apple的UITableView.h声明

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

实际的方法名 tableView:cellForRowAtIndexPath
也就是在Objective-c中,方法声明中的:左边的部分全部做为方法的一部分,在Objective-c中没有命名参数。通过上述方式,能够做到清晰定义方法的目的。
理解下来,实际上与Java、C++的方法重载的定义方式有殊途同归之势。
在Java/C++中,通过命名参数的方式,实际上在编译器内部会生成C style的函数名,如:
void test(String s);
--> _test_string
也就是将参数的一部分作为最终编译器能够识别的函数命名部分,这是在高层实现函数重载的基础。虽然我们看起来重载的函数能够命名成函数名相同,但参数类型不同或参数顺序不同,就可以简单调用一个函数来实现接受不同类型参数的重载目的,但是在编译器层面,则是会生成根据函数命名加上参数类别来唯一标识的函数命名方式(c style).
在Objective-c中应该是充分利用这点,然后加上清晰的参数命名风格,才形成了现在这样的命名方式,在编译器内部,应该仍然是c style的函数命名方式,也就是参数命名组成的c函数,从而编译器能够唯一识别出来。
基于以上理解,objective-c中方法的定义可以是N个:分割的部分组成,各部分既是参数也是方法的一部分,当然我们会通过:右边的部分显式的提供一个参数命名。(在编译器内部只关心参数类型,参数命名会自动转换成编译器定义的命名)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{ //实现 }[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐