- 界面通信
- .属性传值, 一般用于从前往后传值, 并通过该属性进行一系列操作
- 也从后往前传值(也可以, 但是不推荐这样去使用)
- . 协议传值(delegate)
- 从后往前传值 决定要在后边的类声明协议(最难确定)
- 声明delegate @property id<Delegate名> delegate
- 在哪签订协议(只要拿到对象, 就可以签订协议)XXX.delegate = self
- xxx.delegate = self 会爆黄, 没有签订协议, 签订协议
- 签订完协议 , 会爆黄的原因是没有事项协议方法
- 但是协议方法没有执行,缺少触发时机在哪里触发协议方法(对应加上判断);
- .属性传值, 一般用于从前往后传值, 并通过该属性进行一系列操作
- 小知识
关于navigation最终控制器的释放
navigation中viewController数组, 数组对应的对象会引用计数+1
当controller入栈时,则被加入数组中,引用计数+1
只要不出站, 就不会释放
A -> push -> B
当B - > pop - >A B出栈, 对应的数组中对应的对象引用计数-1(对 应释放) - 上代码:
-
第一步:
设置属性去接受传过来的值(在制定协议的方法里设置属性)在.h中设置不能私有制,
在第一个界面里的push方法里面给属性赋值
- 协议传值
-
协议传值第一步这定协议和制定协议方法协议方法默认必须实现
-
- 小知识
给属性命名时不要和系统命名重复
-
第二步声明代理人
代理人语义设置最好用weak
- 第三步实现代理协议方法
触发协议方法(判断delegate存不存在,判断delegate类有没有实现协议方法)
- 第四步 签订代理
-
第五步设置代理人
注意:
第六一步 实现协议方法
给属性赋值
- UIViewController