【应用程序代理方法介绍-AppDelegate Objective-C语言】

一、接着来上课啊

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:


6)然后呢,遵守协议以后,是不是实现对应的方法

那,是不是在类实现里面,实现这个“写作业”方法:

然后你NSLog(@“努力的写作业……”);一下

现在这个结构,能明确吗:

7)是不是还有一个设置代理,在哪儿块设置代理:

是不是也是在学生里边,应该有一个地方,是设置代理的,对吧,

设置代理:

根据你的情况,可能在某一个地方,需要设置代理:

老师是不是说过,在一个合适的地方,设置这个代理,

你自己找这个合适的地方,啊,

然后,那现在,这个结构,是不是很清晰:

但是,对于我们项目启动,这个文件,AppDelegate:

这个家伙:

你能把它对比过去吗,

1)哪一个,是我们的代理类啊:

如果现在看:老师跟学生,现在学生,是不是对应的代理类,对吧:

因为它,遵守了这个协议嘛:

对吧,而且,这个协议,你在类扩展里面写,你在“点儿”h文件里面,是不是也可以写啊,对不对,

那,这个AppDelegate里边,它是不是写到“点儿”h文件里边来了:

没有问题吧,所以呢,我把它,也放到“点儿”h文件里边:

放到“点儿”h文件中:

可以吧,

那,现在呢,那,Student.m文件中,这一堆的方法:

我们已经给大家解释过了,这一堆呢,都是一些代理方法࿰

你可能感兴趣的:(Objective-C,objective-c,开发语言,macos)