在介绍block循环引用前我们先了解一下typeof。

typeof是什么???

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。 它返回值是一个字符串,该字符串说明运算数的类型。

一、对于数字类型的操作数而言,typeof返回的值是number。比如说:typeof(1),返回的值就是number。 上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在 JavaScript中代表的是特殊非数字值,虽然它本身是一个数字类型。

二、对于字符串类型,typeof返回的值是string。比如typeof("123")返回的值是string。

三、对于布尔类型,typeof返回的值是boolean.比如typeof(true)返回的值是boolean。

四、对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。

五、对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。

六、如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。

了解typeoy后就可以了解block的弱引用

为什么要用弱引用???

我们知道block通长是与strong想匹配的,但是MRC遗留的问题我们也需要尊重,因此很多时候也会发现copy,在ARC中这两种的效果是一样的。既然看到strong,copy当然就要考虑到强引用问题。

我们可以这么理解

对象有一个Block属性,然而这个Block属性中又引用了对象的其他成员变量,那么就会对这个变量本身产生强引用,那么变量本身和他自己的Block属性就形成了循环引用。因此我们需要对其进行处理进行弱引用。

怎么实现弱引用???

下面是简单的代码:

  • __weak typeof(self) weakSelf = self;
  • self.Block = ^ {
  • if (weakSelf.people) {
  • weakSelf.people.name = @"。。。。。";
  • }
  • }; 这里只是简单的介绍,想要掌握还是需要多加练习。

本文转载自 @"旭宝爱吃鱼"

最新文章

  1. IIS GZip
  2. UIPickerView理解
  3. VisualSVN Server导入Repository
  4. eclipse中gradle的使用
  5. nodejs发起HTTPS请求并获取数据
  6. Python入门-引号
  7. springMVC视频教程
  8. Windows,OS X 屏幕录制gif的工具
  9. hdu 2102 A计划(BFS,基础)
  10. Eclipse 安装Activiti 插件失败解决方法
  11. 总结showModalDialog在开发中的一些问题
  12. C# 几种方法来复制的阵列
  13. Autotest添加测试用例小结
  14. js对手机软键盘的监听
  15. [LeetCode] 132. Palindrome Partitioning II_ Hard tag: Dynamic Programming
  16. LODOP字体不识别 英文字母连起来 引号不正常
  17. 测试利器 Postman
  18. 剑指Offer_编程题_18
  19. ubuntu通过apt-get安装JDK8
  20. [Optimisation] Read & Write file on Hard Disk

热门文章

  1. sql行列旋转
  2. 图片上传预览 (URL.createObjectURL)
  3. YCSB-压测
  4. 删除 https://tfs.visualstudio.com上的项目
  5. 吐槽!important专用博文
  6. TEA(Tiny Encryption Algorithm)
  7. [转载]Bison-Flex 笔记
  8. -bash: msgunfmt: command not found
  9. IIS 7.5 发布Web 网站步骤
  10. php 的txt操作,加入类容