iOS入门(十八)OC中常用的几种传值方式

1、属性传值。属性传值是所有传值方式中最简单的一种方法,所有是实现的传值也是最简单的相邻两个视图之间的被设置为属性的变量之间的值传递。只需在推出下一个页面之前,将下一个页面中接受属性传值的属性在本页面中进行值得设置即可。 

2、单例传值。单例传值是一种比较强大的传值方式,他可以再任意两个页面之间进行一些简单的值传递。所谓的单例传值就是在程序实现中新建一个类,将想要传递的值存储到这样的一个类中,之后在程序的实现过程中,想要调用这个值的所有地方都可以通过新建一个单例的类来取得其中的值。就像是将一个工具放在公用的地方,想要使用工具的对象自己到放置工具的地方取一下就可,单例传值只是多了一点,那便是每一次有对象取走其中的值后,原地都会留下相同的另外一个值。单例传值的核心实现在于,程序实现过程中第一次调用单例的时候是给单例赋值,之后的每一次调用单例对象都是取出单例中的值。

3、代理传值。代理传值是一种比较普遍使用的可以从后面的视图传到前面的视图的方式。代理传值的实现过程是:首先在需要将值传递出去的类中实现一个协议,协议中写一个代理传值的具体方法。然后在需要传值的类中设置一个属性,这个属性为一个遵循之前写的协议的id类型。最后在获取传递的值的实现方法中,指定自己为传值方的代理,然后实现代理所遵循的协议中的方法,将值取到,赋给要对值进行处理的对象。

4、观察者传值。观察者传值是一种比较少用的方法,在观察者方法中,程序员可以在某一个视图控制器中设置观察者和该观察者的标识以及收到观察者信号之后该视图控制器所应该进行的操作。在设置好观察者之后的程序实现中,观察者什么时候接受到相关的信号了,就将信号传递给原始的视图控制器,然后改视图控制器进行相关的操作即可。观察者控制器比较强大的是可以传递很多东西,在很大的程度上更像是给设置观察者的对象添加了一个远程控制器。

5、Block传值。Block传值与观察者传值的实现机制比较相似,只是block传值在整个实现过程中显得更加的简单,并且需要事先确定传值的目的地。在观察者传值中,程序员可以在程序实现的整个范围内选择信号什么时候传递,即使是多次传递也没有关系。而block传值则是需要将要传递的另一个对象确定下来,更多的像是一个老板给固定的员工分配固定的任务,然后将任务成果拿到之后进行固定的处理。

6、Plist传值。Plist传值这种方式是比较少用的一种传值方式,基本的实现原理是:系统在建立好新工程之后会给自己建一个plist文件,里面存储一些关于程序新工程的初始设置数据。这个文件的最大的特点在于,在这个文件中的所有数据都不会因为重新启动而发生改变。每一次程序重新启动的时候,程序中的大部分文件都会重新初始化,很多之前一次程序启动产生的操作便不会保存下来,但是这个Plist文件从工程建立开始变不会因为程序其他部分的设置而改变。一般情况下,可以将这个Plist文件中的值进行每一次启动之间的值传递,或者判断该程序是第几次启动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值