什么情况使用 weak 关键字?

  1. 在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性

  2. 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。

不同点:

  1. weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同assign类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 而 assign 的“设置方法”只会执行针对“纯量类型” (scalar type,例如 CGFloat 或 NSlnteger 等)的简单赋值操作。

  2. assign 可以用非 OC 对象,而 weak 必须用于 OC 对象

转载于:https://www.cnblogs.com/huangzs/p/7515362.html

什么情况使用 weak 关键字,相比 assign 有什么不同?相关推荐

  1. ARM 之十一__weak 和 __attribute__((weak)) 关键字的使用

      今天在使用 Keil (主要是 armcc 编译器)编译代码(华大的 MCU 驱动库hc32f46x_interrupts.h / c)的时候遇到了有 __weak 关键字的函数不起作用的问题,甚 ...

  2. __weak 和 __attribute__((weak)) 关键字的使用

    今天在使用 Keil (主要是 armcc 编译器)编译代码(华大的 MCU 驱动库hc32f46x_interrupts.h / c)的时候遇到了有 __weak 关键字的函数不起作用的问题,甚是奇 ...

  3. iOS 5中的strong和weak关键字

    from:http://blog.csdn.net/yhawaii/article/details/7291134 iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 ...

  4. iOS之深入解析weak关键字的底层原理

    一.weak 关键字 在 iOS 开发过程中,会经常使用到一个修饰词 weak,使用场景大家都比较清晰,避免出现对象之间的强强引用而造成对象不能被正常释放最终导致内存泄露的问题. weak 关键字的作 ...

  5. 汇编的WEAK关键字

    一般来说,这个关键字使用在IMPORT和EXPORT这两个声明段. //// //VectorsTrampolines.s //// IMPORT StackTop [WEAK]AREA |.text ...

  6. arm export 汇编_灵活使用ARM汇编的WEAK关键字 (INPORT,EXPORT)---应该是在keil环境下,iar等还不知道...

    转载于:http://blog.csdn.net/norains/article/details/5954459 //========================================= ...

  7. Objective-c属性修饰关键字(assign retain copy strong weak)

    一.线程相关: [atomic/nonatomic] (1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 ...

  8. 对copy/strong/weak/__weak/__strong/assign的使用场景总结总结

    ARC在编译期间,根据Objective-C对象的存活周期,在适当的位置添加retain和release代码.从概念上讲,ARC与手动引用计数内存管理遵循同样的内存管理规则,但是ARC也无法防止循环强 ...

  9. centos6.5下载卸载mysql,centos 6.5卸载Mysql

    Ubuntu开启22端口 [http://blog.csdn.net/baple/article/details/39288817] 安装OpenSSH Ubuntu缺省没有安装SSH Server, ...

最新文章

  1. ×××第三话:基础Ez×××配置
  2. 利用php比较精确的统计在线人数的办法
  3. 关于程序为什么要代码段,程序段
  4. 软件工程概论 课堂练习 第3次作业6【流图;计算环形复杂度;找独立路径】
  5. GDCM:gdcm::DICOMDIR的测试程序
  6. compat mysql51 5.1_MySQL mysql-5.1升级到mysql-5.6
  7. There is no tracking information for the current branch
  8. maven配置_eclipse创建maven_maven插件配置
  9. python中的与或非_「Python基础」 While 循环语句
  10. MySQL建表两个单引号报错_极客起源 - geekori.com - 问题详情 - mysql建表报错,查手册看不懂,求解?...
  11. 豆瓣上线应急防护模式 防护时间最长可设置14天
  12. 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛
  13. 实现简单的emoji发送功能
  14. Caffe 框架理解
  15. 过去分词做宾语补足语
  16. [CodeForces]CodeForces - 1025F Disjoint Triangles
  17. 中国云计算产业渐成熟 加速传统产业转型升级
  18. mysql给所有表添加字段
  19. ubuntu下U盘文件全部变成只读模式
  20. 域名转化到IP地址的实现

热门文章

  1. quartz Cron-Expression的表达式
  2. Java中使用Socket实现服务器端和客户端通讯
  3. Combox使用的一些技巧
  4. 新浪微博爬虫设计(Python版)
  5. C++判断文件夹是否存在
  6. tortoise清理本地分支_本地:延庆运污水环卫抽化粪池
  7. vue使用echarts图表
  8. python 函数、面向对象
  9. html往下滑变成水平,HTML - 水平滑块CSS最佳方法_html_开发99编程知识库
  10. windows下统一mysql编码_mysql5.7 windows7编码统一utf-8