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