解析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类所支持的一些基本方法。

  1. -(BOOL) isKindOf:class-object(判断对象是否是class-object或其子类的成员)
  2. -(BOOL) isMenberOfClass:class-object(判断对象是否是class-object的成员)
  3. -(BOOL) respondsToSelector:selector(判断对象是否能够响应selector所指定的方法)
  4. +(BOOL) instancesRespondToSelector:selector(判断指定的类实例是否能响应selector所指定的方法)
  5. +(BOOL) isSubclassOfClass:class-object(判断对象是否是指定类的子类)
  6. -(id) performSelector:selector(应用selector指定的方法)
  7. -(id) performSelector:selector withObject:object(应用selector指定的方法,传递参数object)
  8. -(id) performSelector:selector withObject:object1 withObject:object2(应用selector指定的方法,传递参数object1和object2)

要根据类名或另一个对象生成一个类对象,可以向它发送class消息。如:要从名为myClass的类中获得类对象,可编写:[myClass class];

六、使用@try处理异常

@try格式:

  1. @try{
  2. statement
  3. statement
  4. ……
  5. }
  6. @catch(NSException *exception){
  7. statement
  8. statement
  9. ……

在@try块中加入这些statement后,程序正常执行。但如果块中某一条语句抛出异常,执行不会终止,而是立即跳到catch块,在那里继续执行。在@catch块内处理异常可行的执行程序是记录出错消息,清楚和终止执行。

@finally块包含是否执行抛出异常的@try块中语句代码。

@throw指令允许你抛出自己的异常,可以使用该指令抛出特定异常,或者在@catch块内抛出带你进入类似如下的代码的异常:#throw;

小结:解析Objective-C多态动态类型动态绑定的内容介绍完了,希望通过本文的学习能对你有所帮助。

posted on 2012-05-15 09:59 linyawen 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/linyawen/archive/2012/05/15/2500985.html

解析Objective-C中多态、动态类型和动态绑定相关推荐

  1. C++工作笔记- C++中的动态类型与动态绑定、虚函数、运行时多态的实现

    动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...

  2. Objective-C路成魔【11-多态性、动态类型和动态绑定】

    郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠.支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 多态这个其 ...

  3. iOS开发笔记系列-基础3(多态、动态类型和动态绑定)

    多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方 法所需要的代码,这使得它独立于其他的 ...

  4. ObjC学习4-多态、动态类型、动态绑定及异常处理

    1.动态绑定和ID类型 这里建了两个灰常简单的类等会用ID类型去实现它 @interface ClassA:NSObject { } -(void) print; @end @implementati ...

  5. Python学习笔记整理(三)Python中的动态类型简介

    Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...

  6. 使用 var 关键字在 Java 中使用动态类型

    在本文中,我们将讨论 Java 10 的一项很酷的特性--在 Java 中引入 var 关键字 . 扫码关注<Java学研大本营>,加入读者群,分享更多精彩 Java 获得了 var 关键 ...

  7. python动态类型的坑_在Python中避免动态类型错误的策略是什么(NoneType没有属性x)?...

    forgetting to check a type 这没什么意义.你很少需要"检查"一个类型.你只需运行单元测试,如果你提供了错误的类型对象,事情就会失败.根据我的经验,你不需要 ...

  8. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  9. [C#基础知识系列]专题十七:深入理解动态类型

    本专题概要: 动态类型介绍 为什么需要动态类型 动态类型的使用 动态类型背后的故事 动态类型的约束 实现动态行为 总结 引言: 终于迎来了我们C# 4中特性了,C# 4主要有两方面的改善--Com 互 ...

最新文章

  1. poj2566Bound Found尺取法进阶(java)
  2. 【Tools】Wireshark3.0安装教程详解
  3. innodb和myisam数据类型,即在存储上有何特点和区别
  4. 信息奥赛一本通(1099:第n小的质数)
  5. 是否要学点GUI编程
  6. English trip V1 - 2.Don't Do That Teacher:Patrick Key: 祈使句(imperatives)
  7. 网络协议端口号说明(转)
  8. SqlAlchemy操作(一)
  9. SQL注入攻击与防御学习笔记一
  10. DIY基于Arduino的CNC绘图机
  11. iPhone/iPad安装软件出现桌面白图标的问题解决方案
  12. console.log(0.2+0.4===0.6)// true or false??
  13. 兽耳怎么画?怎样才能画好兽耳?
  14. 机器学习实战:第一章
  15. python中repeat_Python中的Repeat类方法
  16. 3.HTML——表格数据
  17. Python 多元线性回归实例
  18. Direct3D 10系统(二)
  19. Win11三指触控怎么设置?
  20. NOIP2014河南获奖名单

热门文章

  1. 【树型DP】BZOJ1564 二叉查找树(noi2009)
  2. ACM模板--邻接表 无向图 Prim Kruskal Dijkstra
  3. JVM源码分析-Java运行
  4. Yacc 与 Lex 快速入门(词法分析和语法分析)
  5. golang中的bufio
  6. golang中的nil
  7. Linux编程下open()函数的用法
  8. tomcat中的几种log catalina localhost
  9. docker-macvlan网络
  10. 新站上线后应该做哪些有利于seo的工作