一、接着来上课啊
1.课下听同学们反应,对第4步,可能有点儿疑问,
额,不是,第5步,
5)根据第四个参数:创建应用程序代理对象,并且将这个代理对象设置为应用程序的代理,
现在,我们只是这么去解释,但是呢,我们是不是,结构上,有点儿不清晰,
那,首先这个,应用程序代理对象,那,大家晕的是哪一块儿呢,
我觉得应该是这个AppDelegate,为什么命名成这种文件:
这个有问题吗:
有问题吧,这种结构,我们是不是没见过,
没见过啊,那我给大家写一个什么呢,我们来看看,平常,我们是怎么去用代理的:
2.在通常情况下,然后呢,我们在哪儿块用到过代理,
大家给我说一个场景,然后呢,咱们来一块儿分析一下,
狗、和猫、是吧,
猫、和狗、啊……
那我直接写了啊,
我先来一个类,
一个学生,一个老师,
我现在呢,老师是不是会让学生去,干嘛,
写作业,对吧,
那我们呢,就用代理的方式,老师让学生去写作业,
来实现一下这个过程啊,我们直接写了啊,
1)首先,一个老师类,teacher,一个teacher.h、一个teacher.m
对吧,没有疑问吧,
Teacher.h
Teacher.m
Teacher.h、Teacher.m:这是不是一个教师类,
额,现在字体太小了,我加大点儿:
这样可以吗,
Teacher.h:教师类
Teacher.m
然后呢,还有一个学生类,
Student.h:学生类
Student.m
这是我们经典案例,是吧,
那,现在,我让你通过代理的方式,完成一个:“教师让学生去写作业”
老师想让学生写作业,老师是不是要规定一些什么东西啊,
1)老师,是不是要声明一个协议:
在老师的“点儿”h、还是“点儿”m文件里面,声明协议,
是不是“点儿”h文件上面,声明协议:
2)然后呢,协议里面是不是跟的是一些协议方法,比如说,写作业的方法:
然后呢,你现在把这个协议,写好以后,还需要什么东西,
3)是不是还需要一个代理属性,delegate属性:
在这个“点儿”h的类声明里面,是不是写一个代理属性:
assign、weak、是不是都可以
然后呢,这个代理属性,遵守什么协议,id< >
那我把这个协议,写一下:
我们平常写的时候,是不是TeacherDelegate
然后呢,遵守这个协议,command + C、command + V:
command + V:
然后呢,这个尖括号,上去:
是不是来一个代理属性:
然后呢,教师的工作,做完了吗,没有吧,
4)还差什么,它是不是还需要“通知代理”,让代理去执行操作,
然后呢,怎么去执行操作呢:
为了安全起见,我们是不是先判断一下,
if(self.delegate responseToSelector)
然后呢,把这个方法传进来,是不是就是对应的协议方法:
写作业:
然后呢,加个中括号:
if([self.delegate responseToSelector:]){ }
如果它响应了这个方法,是不是才去“通知代理”,让代理执行操作:
self.delegate 写作业;
加个中括号:
然后呢,教师的工作,现在是不是算完了
到某一步骤,你让学生写作业
那现在呢,
5)在学生里面,怎么干:
我们平常写的时候,是不是在Student“点儿”m文件的类扩展里面,
对,Student“点儿”m文件,有一个类扩展,
然后呢,有一个类实现,
类扩展里面,是干嘛的,是不是要遵守那个协议,
遵守这个教师的协议:TeacherDelegate协议:
command + C、command + V: