zoukankan      html  css  js  c++  java
  • 解析ObjectiveC中多态、动态类型和动态绑定

    转自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.      
    2.  @try{  
    3.  statement  
    4.  statement  
    5.  ……  
    6. }  
    7.  @catch(NSException *exception){  
    8.  statement  
    9.  statement  
    10.  ……  

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

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

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

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

  • 相关阅读:
    Vue 项目目录结构分析
    Vue 项目环境搭建
    Vue 组件
    Vue 指令
    Vue 实例成员
    Django 静态文件
    MySQL 索引详解
    Django 请求生命周期
    18. 4Sum (JAVA)
    16. 3Sum Closest (JAVA)
  • 原文地址:https://www.cnblogs.com/linyawen/p/2500985.html
Copyright © 2011-2022 走看看