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

来源:互联网 发布:多媒体播放器软件 编辑:程序博客网 时间:2024/06/06 01:14

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对象。 这样就能做到传递数据。
初步理解就是这样,纯属自己瞎想。 等周末有时间再来深入了解。