您的位置:首页 > 其它

5种传值方式

2016-01-11 23:01 99 查看
//1.传值方式
//1.属性传值: 从前一个页面向后一个页面传值
//a.在后一个页面, 根据传值的类型和个数, 写属性
//b.在前一个页面, 为属性赋值
//c.在后一个页面, 使用值

//2.代理传值: 从后一个页面向前一个页面传值
//后一个页面(找代理)
//a. 制订协议
//b. 写delegate 属性
//c. 在合适的时候, 让代理协议执行方法

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

//4.单例传值: 多个页面间的传递
//a.创建单例类
//b. 根据参数的个数和类型, 在单例中写属性
//c. 内容存入单例
//d. 从单例中取内容
//缺点:
//a.创建对象时, 必须使用单例方法, 不能使用 alloc + init
//b.单例到程序结束才释放, 内部不能放过大的数据.(应用从头到尾都要用, 就设置为单例)

//5.block 传值: 从后一个页面到前一个页面(只要能写成代理传值,都可以写成 block 传值)(一般更简单)
//后一个页面
//a.对 block 类型, 重命名
//b.写 block 属性
//c.在合适的 时候, 调用 block

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

//求两个整数之和的 block
//前面两个值表示, 参数类型; 后面表示参数
//    int(^sum)(int, int) = ^(int a, int b) {
//        return a + b;
//    };
//    NSLog(@"%d", sum(2,3));
//重命名,参数类型重命名
typedef int(^Sum)(int, int);

Sum sum = ^(int a, int b) {
return a + b;
};
sum(2,5);//调用使用

Box *box = [Box defaultBox];
NSLog(@"%@", box);

Box *box1 = [Box defaultBox];
NSLog(@"%@", box1);

//    Box *box3 = [[Box alloc] init];//错误的
//比如:
//    [UIScreen mainScreen]
//    [UIApplication sharedApplication]

//UIViewController的生命周期(一个对象从创建到消亡的过程)
//1.alloc + init
//2.loadView
//3.viewDidLoad
//4.viewWillAppear
//5.viewDidAppear
//6.view WillDisapper
//7.viewDidDisapper
//8.dealloc
//注:1238, 只会执行一次; 4567:执行多次

return YES;
}
多练!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: