#pragma -------------协议-----------
协议:共同遵守的条约 可以不遵守 遵守了->也可以不落实
Protocol :协议 制定共同实现的方法(如果不实现会警告 但不会崩溃)
协议定义:1、协议只有声明文件 只需要告诉人要遵守哪个方法 不需要指定具体怎么去实现
2、协议有强制执行(@required)和选择执行(@optional),默认的是强制执行
@required //强制执行 默认的 不写就默认
- (void)redLight;
- (void)greenLight;
@optional //选择执行
- (void)yellowLight;
协议是一个公共接口 只要遵守协议的类都可以使用这个接口
声明协议步骤:
1、创建声明协议:commcnd+N -> Object-c File ->选择Protocol
公式: @protocol 协议名
2、声明协议方法:只要遵守协议的类都可以使用这个接口
声明协议的方法有两种;(1):强制执行(@required)不写的话默认强制执行
(2):选择执行(@optional)
3、遵守协议 实现协议步骤:
1、导入协议名 #import"协议名.h"
2、@interface 类名 : 父类名<协议名>
3、实现协议里面的方法
为什么要使用协议?协议不是一对一,而是多种类都可以使用
答:协议是一个公共接口,可以通过公共接口去声明方法,让只要遵守协议的类都可以使用,就不用单独去声明接口方法。节省代码量
#pragma ------------代理-----------
代理:1、也是一个协议,让别人帮忙做某件事的协议
2、自己做不了或者不去做,让别人去做
代理又叫做委托 delegate
使用步骤:
前三步 是写在 给别人值(帮别人做事)第二个页面
1、声明代理方法
2、声明属性接口
3、确定什么时候触发代理
后三步 写在接收数据的那 第一个页面
4、导入类名 代理名
5、挂上代理 (*****是否能 调用代理方法)
6、实现代理方法
#pragma --------程序的执行流程-----------
程序的执行流程:
程序的入口是main函数,使用 代理 ;根据程序的运行方法进入不同的代理方法
__FUNCTION__ 当前执行的方法
__LINE__ 当前的行数
NSLog(@"%s %d",__FUNCTION__,__LINE__);
启动流程:
1、main 程序的入口(只执行一次)
2、加载完所有选项,准备启动->可以在这个方法里面写需要加载的内容(窗口、启动时要创建的对象、数据,(只执行一次)
application didFinishLaunchingWithOptions:
3、进入活动状态->可以看到加载出来的内容->还原之前的状态(不止调用一次)
applicationDidBecomeActive:
按HOME键或者其他应用程序进入后台的步骤:
1、即将进入非活动状态(不止调用一次)->在这方法里可以写想要保存的应用状态
{applicationWillResignActive:
1⃣️当应用程序将要入非活动状态执行,
2⃣️进入非活动状态执行的条件:1、比如来电话了 2、HOME键}
2、进入后台状态 (以前进入后台15秒后应用程序将不再运行)如果想让应用程序一直运行,可以在这方法里面进行操作 (不止调用一次)
applicationDidEnterBackground:
再次回到应用程序执行流程:
1、从后台即将进入前台时调用(不止调用一次)
applicationWillEnterForeground:
2、已经进入活动状态
applicationDidBecomeActive:
即将退出应用程序:(调用一次)
applicationWillTerminate:
#pragma --------回顾----------
1、协议
2、代理
3、程序的执行流程
1、协议:公共接口 可以在协议里面声明 一些公共的方法 只要遵守协议的类 都可以使用这些协议方法
导入协议:<协议名>
好处:节省代码量 不用重复去声明相同的方法
2、代理:委托别人去帮忙做某件事 也是一个特殊的协议
3、程序的执行流程
程序的入口是main
main会根据程序的运行状态 使用代理 去调用 对应状态的方法
启动流程:
1、main程序的入口
main
2、加载完所有选项 准备启动 -> 可以在这个方法里面写 需要加载的内容(窗口、启动时需要创建的对象、数据)(只执行一次)
application:didFinishLaunchingWithOptions:
3、进入活动状态-》可以看到加载出来的内容 -》还原之前的状态(不止调用一次)
applicationDidBecomeActive:
按HOME键或者其他使应用程序进入后台步骤:
1、即将进入非活动状态(不止调用一次)->想要保存的应用状态
applicationWillResignActive:
2、进入后台状态(之前进入后台15秒后应用程序将不再运行)如果想让程序一直运行 可以在这个方法里面进行操作 (不止调用一次)
applicationDidEnterBackground:
再次回到应用程序执行流程:
1、即将回到前台(不止调用一次)
applicationWillEnterForeground:
2、已经进入活动状态
applicationDidBecomeActive:
即将退出应用程序(只调用一次)
applicationWillTerminate: