@第一种:属性传值
应用场景: 从前一个页面向后一个页面传值
1.在后一个页面中写属性
2.在前一个页面中为属性赋值(在页面切换的时候)
3.在后一个页面使用值
@第二种:代理传值
应用场景: 从后一个页面向前一个页面传值
1.后一个页面要制定协议, 写delegate属性, 让delegate执行协议方法
2.前一个页面成为后一个页面的代理, 遵守协议, 实现协议方法
注: 属性传值和代理传值是线性的只能从前一个页面把值传给后一个页面, 或者从后一个页面把值传给前一个页面;
@第三种: 单例
单例是一种设计模式, 用单例模式设计出来的类生成的对象只能有一个.
使用单例需要注意的:
1.一旦用单例模式设计的类, 不能使用dealloc, 也不能使用init方式创建对象
2.单例内不要存过大得数据
(写个例子)使用单例的时候自己写创建对象的方法:
下面的代码是 .h文件中的声明
//创建对象的方法
//1.类方法
//2.返回值类型是当前类
//3.方法名以 shared/main/default + 类名
+ (CCDataHandle *)sharedDataHandle;
下面的代码是在 .m文件中的实现
/**
static修饰的变量, 只能被初始化一次, 并且存放在静态区, 当程序结束内存才被释放
*static CCDataHandle *dataHandele = nil;
*/
static CCDataHandle *dataHandele = nil;
+ (CCDataHandle *)sharedDataHandle {
if (dataHandele == nil) {
dataHandele = [[CCDataHandle alloc] init];
//封装数据
[dataHandele createData];
}
return dataHandele;
}
@第四种: block传值
应用场景: 只要能用delegate传值就能写成block传值, 从后一个页面向前一个页面传值;
1.在后一个页面, 重命名block类型, 写block属性, 调用block;
2.在前一个页面, 个block赋值
3.优化: 把block赋值封装起来