对于iOS delegate的粗浅理解(之后深入研究再补充)

本文探讨了Objective-C中代理模式的使用方式及其内部机制。通过一个具体示例,解释了即使未在头文件中声明方法,也能在分类中调用已实现方法的原因。文章还分析了代理如何实现类间的数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、今天遇到一个问题,在分类中直接写了这么一行代码
[self beginShow];
beginShow 这个方法只在.m中实现了,并没有在.h声明。所以在分类中直接用肯定会报错,但是这里没有。
查找一番后,发现在.h声明的代理中有个同名方法。
初步理解为,声明了代理,等于将代理中声明的方法导入了。所以在.m中直接实现,就可正常的应用于代理。
所以平时使用代理方法[self.delegate beginShow];这种格式。
声明self.delegate时用的代码就可以理解了。
@property(nonatomic, weak) id<MyInfoHeadDelegate>delegate;
MyInfoHeadDelegate 理解为代理类, self.delegate 是实例对象。
这个实例对象 就是 声明这个代理的类的 实例对象。
代理可以传递数据,因为 代理可以在一定程度上复制一个类。

所以是不是自己复现代理, 比如 a 对象 给 b对象。是不是在。a对象中。初始化一个b 类的实例, 而这个实例的内存地址指向的是b对象。 这样就能做到传递数据。
初步理解就是这样,纯属自己瞎想。 等周末有时间再来深入了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值