我对代理的理解就是:有些事情的原因你最清楚,就像苹果的UITableViewDelegate UITableViewDataSource两个代理,苹果知道表视图是怎么滚动的,滚动的速度,方向,要怎么展示,可是它不知道要展示什么数据,要怎么展示,这些相关的逻辑和数据,都需要开发者定义,因此它定义了两个代理属性,有相应的代理方法,开发者只需将对应的参数传递给他就可以。
再举一个简单的例子,就像小孩和保姆的关系,只有小孩知道自己是不是饿了,要吃什么,而保姆只是有照顾小孩的功能的一类代表。当小孩饿的时候,baby会告诉能照顾自己的这类人,我饿了,要吃饭。而保姆就可以做相应的工作。
定义代理的几个步骤:
1> 创建代理,添加代理方法
2> 添加代理属性
3> 在需要的时候调用,例如在点击自定义的UITableViewCell中的button需要刷新列
表,即可在button点击事件中调用代理对象的代理方法
4> 在代理类中,成为代理对象,遵守代理协议
5> 实现代理方法
Block
block传值和代理的用法相似,只是少了创建代理,添加代理方法,称为代理对象,遵守代理协议这些步骤。
它的具体步骤如下:
1> 创建block,添加block属性
2> 在需要的地方调用block
3> 在实现的地方使用block
如果