IOS:Objective-C中奇特的方法声明语法理解
2013-07-14 16:37
337 查看
//下面的语法真的很奇特,按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]
相关文章推荐
- IOS:Objective-C中奇特的方法声明语法理解
- 【IOS 开发学习总结-OC-12】★objective-c面向对象之——合成存取方法与点语法
- Objective-C(四、属性声明与功能,点语法)——iOS开发基础
- Objective-C,ios,属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
- ios 中调用函数的方法是消息传递,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候
- IOS学习 Block语法的使用:Button、AlertView监听方法改写
- 李洪强iOS开发之OC[011] - 有参方法的声明实现以及调用练习
- IOS基础:深入理解Objective-c中@class的含义
- 从C语言的变量声明到Objective-C中的Block语法
- iOS 导航栏返回到指定页面的方法和理解
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
- Objective-C语法之Objective-C语言和IOS系统(简介,语法,系统结构)
- iOS 面试题(七):为什么 Objective-C 的方法调用要用方括号?
- 1,Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)
- Objective-C的方法声明和调用
- [Objective-c 基础 - 2.2] OC弱语法、类方法
- IOS,objective_C中用@interface和 @property 方式声明变量的区别
- iOS(Objective-C语法)面试、笔试题目
- Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)
- objective-c 基础语法和习题 :类、对象和方法