解析Objective-C中多态、动态类型和动态绑定
转自http://mobile.51cto.com/iphone-285157.htm
Objective-C中多态、动态类型和动态绑定是本文要介绍的内容,主要是俩学习Objective-C中的一些相关的内容,从而来学习Objective-C的使用方法,具体内容来看详细内容讲解。
AD:
Objective-C中多态、动态类型和动态绑定是本文要介绍的内容,主要是俩学习Objective-C中的一些相关的内容,从而来学习Objective-C的使用方法,具体内容来看详细内容讲解。
一、多态
相同的名称、不同的类。使不同的类共享相同的方法名称的能力。
二、动态绑定和id类型
id——通用的对象类型,可以用来存储属于任何类的对象。如:id dataValue;(不用加*号)
三、编译时和运行时检查
存储在id变量中的对象类型在编译时无法确定,所以一些测试推迟到运行时进行。
四、id数据类型与静态类型
将一个变量定义为特定类的对象时,使用的是静态形态。
使用动态类型调用一个方法,注意规则:如果在多个类中实现名称相同的方法,那么每个方法都必须符合各个参数的类型和返回值类型。
五、有关类的问题
NSObject类所支持的一些基本方法。
- -(BOOL) isKindOf:class-object(判断对象是否是class-object或其子类的成员)
- -(BOOL) isMenberOfClass:class-object(判断对象是否是class-object的成员)
- -(BOOL) respondsToSelector:selector(判断对象是否能够响应selector所指定的方法)
- +(BOOL) instancesRespondToSelector:selector(判断指定的类实例是否能响应selector所指定的方法)
- +(BOOL) isSubclassOfClass:class-object(判断对象是否是指定类的子类)
- -(id) performSelector:selector(应用selector指定的方法)
- -(id) performSelector:selector withObject:object(应用selector指定的方法,传递参数object)
- -(id) performSelector:selector withObject:object1 withObject:object2(应用selector指定的方法,传递参数object1和object2)
要根据类名或另一个对象生成一个类对象,可以向它发送class消息。如:要从名为myClass的类中获得类对象,可编写:[myClass class];
六、使用@try处理异常
@try格式:
- @try{
- statement
- statement
- ……
- }
- @catch(NSException *exception){
- statement
- statement
- ……
在@try块中加入这些statement后,程序正常执行。但如果块中某一条语句抛出异常,执行不会终止,而是立即跳到catch块,在那里继续执行。在@catch块内处理异常可行的执行程序是记录出错消息,清楚和终止执行。
@finally块包含是否执行抛出异常的@try块中语句代码。
@throw指令允许你抛出自己的异常,可以使用该指令抛出特定异常,或者在@catch块内抛出带你进入类似如下的代码的异常:#throw;
小结:解析Objective-C中多态、动态类型和动态绑定的内容介绍完了,希望通过本文的学习能对你有所帮助。
转载于:https://www.cnblogs.com/linyawen/archive/2012/05/15/2500985.html
解析Objective-C中多态、动态类型和动态绑定相关推荐
- C++工作笔记- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...
- Objective-C路成魔【11-多态性、动态类型和动态绑定】
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠.支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 多态这个其 ...
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方 法所需要的代码,这使得它独立于其他的 ...
- ObjC学习4-多态、动态类型、动态绑定及异常处理
1.动态绑定和ID类型 这里建了两个灰常简单的类等会用ID类型去实现它 @interface ClassA:NSObject { } -(void) print; @end @implementati ...
- Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
- 使用 var 关键字在 Java 中使用动态类型
在本文中,我们将讨论 Java 10 的一项很酷的特性--在 Java 中引入 var 关键字 . 扫码关注<Java学研大本营>,加入读者群,分享更多精彩 Java 获得了 var 关键 ...
- python动态类型的坑_在Python中避免动态类型错误的策略是什么(NoneType没有属性x)?...
forgetting to check a type 这没什么意义.你很少需要"检查"一个类型.你只需运行单元测试,如果你提供了错误的类型对象,事情就会失败.根据我的经验,你不需要 ...
- [.NET] 《Effective C#》快速笔记 - C# 中的动态编程
<Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...
- [C#基础知识系列]专题十七:深入理解动态类型
本专题概要: 动态类型介绍 为什么需要动态类型 动态类型的使用 动态类型背后的故事 动态类型的约束 实现动态行为 总结 引言: 终于迎来了我们C# 4中特性了,C# 4主要有两方面的改善--Com 互 ...
最新文章
- poj2566Bound Found尺取法进阶(java)
- 【Tools】Wireshark3.0安装教程详解
- innodb和myisam数据类型,即在存储上有何特点和区别
- 信息奥赛一本通(1099:第n小的质数)
- 是否要学点GUI编程
- English trip V1 - 2.Don't Do That Teacher:Patrick Key: 祈使句(imperatives)
- 网络协议端口号说明(转)
- SqlAlchemy操作(一)
- SQL注入攻击与防御学习笔记一
- DIY基于Arduino的CNC绘图机
- iPhone/iPad安装软件出现桌面白图标的问题解决方案
- console.log(0.2+0.4===0.6)// true or false??
- 兽耳怎么画?怎样才能画好兽耳?
- 机器学习实战:第一章
- python中repeat_Python中的Repeat类方法
- 3.HTML——表格数据
- Python 多元线性回归实例
- Direct3D 10系统(二)
- Win11三指触控怎么设置?
- NOIP2014河南获奖名单