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

2023-10-21 01:44

本文主要是介绍【应用程序代理方法介绍-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文件中,这一堆的方法:

通知

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

这篇关于【应用程序代理方法介绍-AppDelegate Objective-C语言】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251094

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步