• iOS多态 动态绑定


    多态和动态绑定是为了解决父类调用子类的问题   

      首先,声明三个类aa bb cc 都继承于fist类

    #import <Foundation/Foundation.h>

    @interface fist : NSObject

    {

        SEL name;

    }

    -(void)print;

    @end

    @implementation fist

    -(void)print

    {

        NSLog(@"我是aa");

    }

    @end

     

    @interface aa : fist

    -(void)nihao;

    @end

    @implementation aa

     

    -(void)nihao

    {

        NSLog(@"buhdddddddddao");

    }

     

    @end

     

     

    @interface bb : fist

    -(void)nihao;

    @end

    @implementation bb

     

    -(void)nihao

    {

        NSLog(@"我是bb");

    }

     

    @end

    @interface cc : aa

    -(void)nihao;

    @end

    @implementation cc

     

    -(void)nihao

    {

        NSLog(@"我是cc");

    }

     

    @end

     

     

     

    int main(int argc, const char * argv[])

    {

     

        @autoreleasepool {

            

            aa *a=[[aa alloc] init];//声明aa的对象

            bb *b=[[bb alloc] init]; //'''

            cc *c=[[cc alloc] init];

                    

            

            fist *dd[3]={a,b,c};//可以用父类  id 或者NSobject

      for (int i=0; i<3; i++) {

                 SEL gong;

                gong=@selector(nihao);//定一个选择器

                if ([dd[i] respondsToSelector:gong]==YES) {//逐个遍历出来

                    [dd[i] performSelector:gong];

                    [dd[i] release];

         }

                }

                     

            }

     

            

        }

        return 0;

    }

  • 相关阅读:
    1.Oracle12cR1的集群件及其组件
    28.oracle监听开启trace file
    connection strings for sql server 2005
    MDAC(Introduce to Microsoft Data Access Components)
    动态链接导入库与静态链接库
    vue3.0小印象
    vue3.0中的vite如何引入markdown文件为页面
    算法
    适配器模式(转载)
    WEB即时通讯之 XMPP OPENFIRE strophe JAXL
  • 原文地址:https://www.cnblogs.com/flyingdreaming/p/polymorphic.html
Copyright © 2020-2023  润新知