谈谈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 )。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,706评论 30 472
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,507评论 1 23
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 1,149评论 0 10
  • 基础 1. 为什么说Objective-C是一门动态的语言? 2. 讲一下MVC和MVVM,MVP? 3. 为...
    波妞和酱豆子阅读 3,567评论 0 46
  • 1.正向传值 属性传值在B类中定义属性用于接收A类传来的数据 2.反向传值(回调) 1)利用对象反向传值 将A类对...
    ScaryMonsterLyn阅读 1,495评论 0 0

友情链接更多精彩内容