• 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、声明代理的指向,在实现方法的类里面。

     

  • 相关阅读:
    pod间访问
    Android地图下钻(坑我好久)
    学习进度23
    学习进度22
    人月神话读后感03
    团队介绍
    人月神话读后感02
    学习进度21
    学习进度20
    学习进度19
  • 原文地址:https://www.cnblogs.com/easonoutlook/p/2642795.html
Copyright © 2020-2023  润新知