谈谈ios中传值的区别(代理,block,通知,单利,NSuserdefault)

各个传值的优势

在前面都给大家介绍了以上传值得用法,在这里就讲讲它们的区别。

  • delegate和block常用于逆向传值。都比较好用,但两者还是有区别的。
    1:delegate在写法上比较麻烦,一方必须设置代理,另一方必须遵循代理.
    代理中的方法有必须实现和可实现两种。
    delegate的优势:代理的回调函数可以是一组多个函数,在不同的时机调用不同的回调函数,也可以说在一个协议中定义多个方法。在不同的触发事件中执行。

2:block 在写法上比较自由,是一种轻量级的回调,能够直接访问上下文,使用块的地方和块的实现地方在同一个地方,使得代码组织更加连贯。但是在使用block时需要注意防止循环引用,导致内存泄漏的问题。

  • 单例传值:单例可以保证的程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源。并且可以用于跨界面传值,判断状态等。

  • 通知:通知可以说是以广播形式发消息.可以实现一对多进行传值,跨界面传值。在使用时需要注意用完需要移除通知。

  • NSUserDefault: NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原。NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
    如果想要将上述数据类型的数据永久保存到NSUserDefaults中去,只需要简单的操作(一个Value 一个Key )。

你可能感兴趣的:(谈谈ios中传值的区别(代理,block,通知,单利,NSuserdefault))