传值方式(block, 属性,代理 ,单例)

最近在工程练习中写了大量单例传值的方法,然后回想起自己习用的传值方式, 也就四种, 如题目; 下面是对这四种传值方式的一个总结

1.属性传值##从一个页面向后一个页面传值

a.在后一个页面, 根据传值的类型和个数, 写属性

//在.h文件中
@property (nonatomic, copy)NSString *yourName, *herName;

b.前一个页面, 为属性赋值

//在前往下一个页面时, 
SecondViewController *secondVC = [[SecondViewController alloc] init];
    secondVC.yourName = herTF.text;
    secondVC.herName = yourTF.text;

2.代理传值: ##从后一个页面向前一个页面传值

2.1 后一个页面(找代理)
a.制定协议
b.写delegate属性
c.在合适的时候, 让代理执行协议方法

2.2 前一页面(成为代理)
a.建立关系
b.遵守协议
c.实现协议方法

3.block传值

从后一个页面向前一个页面(能写出代理传值, 都可以转化成block传值)
3.1 后一个页面
a.对block类型, 重命名
b.写block属性
c.在合适的时候, 调用block

3.2 前一个页面
a.为block赋值

4.单列传值
a.创建单例类
b.根据参数的个数和类型, 在单例类中写属性
c.内容存入单例
d.从单例中取内容
缺点
a.创建对象时, 必须使用单例方法, 不能使用alloc + init;
b.单例到程序结束才释放, 内部不能存过大的数据

//单列的创建方式
+ (Box *)defalutBox    {
static Box *box = nil;
if (box == nil) {
    box = [[Box alloc] init];
}
return box;

}

由于代码在不同的页面, 不好整理, 所以就暂时不写代码了

你可能感兴趣的:(语法篇,iOS开发)