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

delegate的使用总结相关推荐

  1. 理解委托(delegate)及为什么要使用委托

    委托:是一种定义方法签名的类型. 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法. 上述为官方说法,理解起来比较难,举个生活中的例子: 某人有三子,让他们各 ...

  2. swift中delegate与block的反向传值

    swift.jpg 入门级 此处只简单举例并不深究,深究我也深究不来.对于初学者来说delegate或block都不是一下子能理解的,所以我的建议和体会就是,理不理解咱先不说,我先把这个格式记住,对就 ...

  3. 在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放...

    最近的项目遇到了网络请求,需要在请求完成后回调delegate的方法.然而回调时经常遇到这种情况:delegate已经被释放,这时调用其方法则会引起crash. objc的runtime中有两种判断类 ...

  4. 异步使用委托delegate --- BeginInvoke和EndInvoke方法

    当我们定义一个委托的时候,一般语言运行时会自动帮委托定义BeginInvoke 和 EndInvoke两个方法,这两个方法的作用是可以异步调用委托. 方法BeginInvoke有两个参数: Async ...

  5. 对delegate进行扩展 打造通用的计时完成方法

    连接数据库是程序员经常要做的事情, 通常情况下, 需要连接SQL Server中哪个数据库是已知的, 用户在输入SQL Server的服务器IP.用户名.密码和数据库名字后, 如果所有信息输入正确, ...

  6. Swift - 委托(delegate)的介绍,及使用样例

    1,委托的说明 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象. 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量 ...

  7. C#中Action与delegate、EventHandler的差异

    Action是一个泛型的委托,其内部即使用delegate去实现,当普通的delegate定义的参数与Action个数.类型一致时,两者实现的功能是一样的.只是Action的方式更加简洁.规范.如下: ...

  8. 【转】iOS开发-Protocol协议及委托代理(Delegate)传值

    原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...

  9. c# 带返回值的action_C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别...

    今天来讲一讲<C#delegate.event.Action.EventHandler的使用和区别> 目录 所以,event应运而生 所以,EventHandler应运而生 所以,Acti ...

  10. iOS视图控制器之间delegate传值

    2019独角兽企业重金招聘Python工程师标准>>> // ** *为了从ViewControllerB往回传值到ViewControllerA,我们需要使用协议(Protocol ...

最新文章

  1. Redis 笔记(09)— 过期时间 expire(设置、查询、取消过期时间)
  2. 【leetcode】86. Partition List
  3. SQLSERVER执行计划详解
  4. linux磁盘、分区、设备简单介绍
  5. Linux学习总结(65)——Linux 服务器安全强化的七个步骤
  6. 传感器怎么获取障碍物的宽度信息_机器人感知 -- 测距传感器
  7. CCCC-GPLT L1-040. 最佳情侣身高差 团体程序设计天梯赛
  8. Delphi7调用dll(图文教程)2021最新
  9. 04 数据清洗与准备
  10. 基于SSM的网上购物系统
  11. java实现萤石云截图保存上传到ftp功能
  12. 最近很多人问我:saiku下载不下来
  13. Chrome——截图插件篇
  14. 【网络爬虫】实现有道翻译提取
  15. asciinema终端录屏神器使用及过坑
  16. Chrome 下IndexedDB 本地存储
  17. Unable to prepare *** iPhone for development
  18. 2020年计算机网络管理员赛项竞赛试题(5)
  19. Spring和SpringBoot中针对单一接口多种实现的支持
  20. 浙外国际学院副院长莅临实在智能,共探产学研合作新方向

热门文章

  1. css之object-fit
  2. 设计包含min函数的栈
  3. 从“埋点技术已死?”开始说起
  4. Laravel 向视图传递变量的3种方法
  5. ASP.NET文件上传和下载
  6. POJ 3748:位操作
  7. C语言学习笔记(五) 数组
  8. p3p-header解决跨域访问cookie
  9. 写给想用技术改变世界的年轻人-by 沃兹
  10. winform datagridview 合并单元格