前言:在我学习iOS的时候,代理是我的痛点,不管怎么理解都是无法理解代理是什么东西。
直到一个月的不断摸索才知道代理是怎么回事;下面我就以初学者的角度来解释什么是代理;
我在理解代理之前,由于我对对象概念没有很清晰的认识,甚至对类这个概念也并不清晰,现在回想起来我觉得是因为我对这两个概念不清晰所导致的;
所以在理解代理之前必须要理解什么是类,什么是对象
1、什么是类,什么是对象
看下图:

图种两个文件既是OC中的类文件,通过这两个类可以创建出很多对象,也就是实例化对象,看看如何实例化对象:

图中的“vc”便是对象,我们可以对这个对象进行各种赋值操作,例如:
ClothingVC * vc = [[ClothingVC alloc]init];
vc.title = @"title"; // 给vc中得title赋值
这样的说明你能够理解类和对象吗?
2、什么是代理
代理的主要作用是两个类之间的传值, 如果只是初学者,你会觉得,类 的头文件不是暴露了一个参数吗,直接给这个参数赋值不就好了吗?是的,你说的没错, 但是我们有一种情况是不能够传值的,就是向上一个类传值。
如果我们push到下一个页面后,你要如何回传一个值到上一个界面呢?这个时候是无法使用公开暴露方法来传值的,因为这会导致循环引用的问题,什么是循环引用?这个以后慢慢理解一下,现在我们先理解代理。
理解这个作用后,来看看什么是代理
网友评论