七种传值方法:
1.属性传值
属性传值多用于从上级页面传到下级页面.关键点:谁是数据的接收方,谁创建属性.
2.代理传值
代理传值多用于从后一个页面往前一个页面传值.关键点:谁是数据提供方,谁创建代理.
注意:代理属性的声明要用assign,如果用retain的话,会造成内存问题(用retain时会使服从协议的页面引用计数+1,当服从协议页面的前一个页面空间回收时,服从协议的页面的空间不能被回收掉,当然提供协议页面也不能被回收掉,这样就造成了空间堆积,而且一般的检测设备检测不出来这种问题).
3.单例传值
单例传值不受视图层级的限制,随时存储,随时获取.关键点:单例里面不能存放过大的数据,因为单例的空间不能不回收.
4.extern传值
extern传值引用在其他类里定义的变量,关键点:全局变量不能不能大量使用,且不易管理.
5.NSUserDefaults传值
NSUserDefaults是系统为我们提供的一种最简单的持久化方式,这个类有单例方法.
6.block传值
block传值和代理传值一样,也是回调传值
7.通知传值
在需要传值的类里注册通知即可,可以一传多,注意在dealloc中销毁通知.