Objective-C 方法重载 - Selector 标识起决定作用
Objective-C 方法重载 - Selector 标识起决定作用
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
转载请保留此句:太阳火神的美丽人生 - 本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
重载方法声明:
- (void)test;
- (void)test:(NSString *)command;
- (NSString *)test:(NSString *)command param:(NSString *)param;
- (NSString *)test:(NSString *)command param:(NSString *)param result:(NSString *)result;
- (NSString *)test:(NSString *)command result:(NSString *)result param:(NSString *)param;
- (NSString *)test:(NSString *)command :(NSString *)result :(NSString *)param;
- (NSString *)test:(NSString *)command param:(NSString *)param callback:(NSString *)callback;
以上每个方法的实现中,都加入这一句,用于打印当前方法的签名:
NSLog(@"%@", NSStringFromSelector(_cmd));
按如下顺序调用以上各方法:
[interface test];[interface test:@"command"];[interface test:@"command" param:@"param"];[interface test:@"command" param:@"param" result:@"result"];[interface test:@"command" result:@"result" param:@"param"];[interface test:@"command" :@"result" :@"param"];[interface test:@"command" param:@"param" callback:@"callback"];
输出结果如下:
2015-02-28 12:14:02.724 TestWebView[1490:371780] test
2015-02-28 12:14:02.724 TestWebView[1490:371780] test:
2015-02-28 12:14:02.724 TestWebView[1490:371780] test:param:
2015-02-28 12:14:02.724 TestWebView[1490:371780] test:param:result:
2015-02-28 12:14:02.725 TestWebView[1490:371780] test:result:param:
2015-02-28 12:14:02.725 TestWebView[1490:371780] test:::
2015-02-28 12:14:02.725 TestWebView[1490:371780] test:param:callback:
由下图 XCode 的错误提示可知,数据类型不能用于区分重载方法:
由下图 XCode 的错误提示可知,冒号前的参数名是用于区分方法签名的依据,形参名和数据类型一样,并不起作用,这源于 selector 的构成要素是冒前前的部分:
由此可以总结:
1、参数个数决定了方法的签名;
2、相同参数个数的方法,参数名用于区分重载
3、数据类型和形参名不能用于区分方法
4、selector 的构成要素决定了,冒号前的部分所构成的方法签名用于区分方法
Objective-C 方法重载 - Selector 标识起决定作用相关推荐
- 令人发指的关于方法重载和方法重写的一些理解(多态)
令人发指的关于方法重载和方法重写的一些理解 文章目录 **令人发指的关于方法重载和方法重写的一些理解** **方法重载的基础** **子类的方法重载** **重载升级只重写** **顺藤摸瓜之干掉&q ...
- 一个黑魔法,竟能让Python支持方法重载
1. 你真的了解方法重载吗? 方法重载是面向对象中一个非常重要的概念,在类中包含了成员方法和构造方法.如果类中存在多个同名,且参数(个数和类型)不同的成员方法或构造方法,那么这些成员方法或构造方法就被 ...
- 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)
一.掌握方法重载(Overload) 同一个类中方法名相同时,称为方法的重载(Overload) 特点:1.参数列表不同 1)参数类型不同 ...
- java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类
1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...
- 没有与参数列表匹配的 重载函数 getline 实例_面试题:方法重载的底层原理?...
前语:微信改版后,大量读者还没养成点赞的习惯,如写得好,望大家阅读后在右下边"好看"处点个赞,以示鼓励!长期坚持原创真的很不容易,多次想放弃,坚持是一种信仰,专注是一种态度. 关于 ...
- java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...
[单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...
- java基础-方法重载
**方法重载:**同一个类方法名相同,参数列表个数或参数不同即可 口诀: "两同一不同":同一个类,相同方法名 参数列表不同:参数个数不同,参数类型不同,参数顺序不同 **注意:* ...
- Java 方法重载 方法重写
方法重载规则 参数个数不同 参数个数相同,但参数列表中对应的某个参数的类型不一样 方法的返回类型和参数名称不参与重载 "编译期绑定",,因为未产生对象,只看参数.引用类型绑定方法 ...
- 在java中方法重载的要求,Java方法的重载
Java方法的重载 方法重载:在类中方法名称相同,但是形式参数不同 public class Demo15 { public static void main(String[] args) { int ...
最新文章
- 24 个必须掌握的数据库面试问题!
- 4.9 行列均不满秩方程
- TFS创建登录用户并连接TFS
- 【华为云技术分享】ARM体系结构基础(2)
- mysql 大表更新数据类型_MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)...
- python 整除的数组_LeetCode 974. 和可被 K 整除的子数组 | Python
- 游戏代理ip怎么设置_游戏代理怎么做
- 计算机网络原理的思维导图汇总
- SLC、MLC和TLC三者的区别
- 2020 iOS拼多多(多多进宝)APP端接入,打开拼多多商品详情与授权
- omni的 osx86 ati 驱动
- 一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider...
- Vue父组件传参数给子组件时,页面崩溃或者报undefined或者数据为空或者执行了两遍
- ad采样的符号位_AD位数是如何影响信号幅值的?
- contiki-6lowpan开发环境之搭建
- 华为鸿蒙harmonyos-面向全场,华为鸿蒙 OS 下月发布?别做梦了……
- 前端常见面试题 - JS篇
- ad怎么导入cad的外形尺寸_AD10怎样精确导入CAD文件?
- 一起智慧课堂_聚焦课堂,提升质量——六盘水市钟山区第一小学“智慧”课堂校际交流活动...
- 耳机不分主从是什么意思_音质出色,降噪服众,千元机档位王者南卡A1主动降噪耳机深度评测...
热门文章
- 语义分割算法性能比较_AAAI 2020 | 商汤:新视频语义分割和光流联合学习算法
- java怎么求方程的虚根_java怎么求一元二次方程虚根,虚根i怎么定义啊。
- Ext3 -- Form 实例。 用来migrate file 数据到DB用的
- java addall 不能传null_null 之AddAll、Add和Boolean
- linux挂载磁盘组,11G ASM磁盘组不能自动MOUNT处理
- linux系统找运行指令,Linux系统常用指令总结
- linux 多个makefile,linux – 具有多个目标的Makefile
- 华为服务器怎么查看系统日志,查询系统操作日志(operationlog)
- mysql开启binlog日志影响性能吗_mysql binlog日志优化及思路
- Linux中Docker部署Tomcat