zoukankan      html  css  js  c++  java
  • delegate的使用总结

    需要在A类中修改B类的方法

    ClassA.h

    @protocol ClassADelegate    //在类A中声明并且定义一个代理

    -(void)ChangeObjectFromClassB;

    @end

    @interface ClassA: NSObject {
            id<ClassADelegate> delegate;
    }

    @property (nonatomic,assign) id <ClassADelegate> delegate;

    @end


    ClassA.m

    @implementation ClassA

    @synthesize delegate;

    ...do something

    -(void)method
    {
           //do something
           //在类A中主动调用代理方法(方法在类B中重写)
           [self.delegate ChangeObjectFromClassB];
    }

    @end

    --------------------------------------------------------------

    ClassB.h

    @Interface ClassB:NSObject  <ClassADelegate> {  //遵守类A的协议

    }

    @end


    ClassB.m

    #import ClassA

    @implementation ClassB

    ...do something

    -(void)method
    {      //生成类A的实例,并将类B代理给A
           ClassA  *objA = [[ClassA alloc] init];
           objA.delegate = self;
    }

    //在B类中重写该代理函数
    -(void)ChangeObjectFromClassB
    {
           //do something
    }

     

    1、谁遵循协议,就在谁里面实现方法,如class B

    2、谁需要代理,就在谁里面声明代理  如class A

    3、在需要完成功能的地方用代理调用该方法

    4、声明代理的指向,在实现方法的类里面。

     

  • 相关阅读:
    Delphi编写星光效果
    网格动画
    在窗体边框上画图
    algebra单元
    CMOS单元
    类似于Split(VB)的函数
    利用PHPLIB加入模板功能
    随机产生一个中文
    测试PHP
    获得指定后缀名的文件数
  • 原文地址:https://www.cnblogs.com/easonoutlook/p/2642795.html
Copyright © 2011-2022 走看看