美文网首页
Block 相关知识

Block 相关知识

作者: River_YYH | 来源:发表于2021-02-04 17:01 被阅读0次
image.png

1、什么是block

Block 是将函数及其执行上下文封装起来的对象

2、block截获对象


image.png
a、对于基本数据类型的局部变量截获其值。
b、对于对象类型的局部变量连同所有权修饰符一起截获。
c、以指针形式截获局部静态变量。
d、不截获全局变量、静态全局变量.

3、在什么情况下需要使用__block修饰符?

一般情况下,对被截获变量进行赋值操作需要使用__block
image.png
image.png
image.png
image.png
image.png
image.png

4、为什么block会产生循环引用?
a、当前block对当前对象的某一成员变量的进行截获,那么这个block对这个变量就有了一个强引用,当前block由于当前对象对其有一个强引用,就会产生一种自循环引用,我们可以将其变量声明为__weak来解决
b、如果我们定义一个__block也是会产生循环引用但是需要区分场景:
一种是ARC下可以产生但是MRC下不会,同时在ARC下我们通过段环方式来解决。但是有弊端若这个Block一直没有调用这个循环引用就一直存在。
5、你都遇见过哪些循环引用?你又是怎样解决的?

会遇见blcok引起循环引用:block捕获当前对象一个成员变量同时block也是其
成员变量,通过__weak来避免;__block也会引起,通过断闭环来解决。

相关文章

  • Block 初见

    Block 初见 介绍 iOS block 的相关知识 目录 Block 背景知识 Block 使用方式 Bloc...

  • Block相关知识

    一、Block本质 1.1、概念 Block是将函数及其执行上下文封装起来的对象。 问题1:什么是Block? B...

  • Block 相关知识

    1、什么是block 2、block截获对象 3、在什么情况下需要使用__block修饰符? 4、为什么block...

  • Block相关(二)

    前言,在上篇文章Block相关(一),中介绍了Block相关的基础知识,包括Block介绍、基础语法、使用情况等。...

  • ios -- block相关知识

    所有的Block里面的self必须要weak一下? 很显然答案不都是,有些情况下是可以直接使用self的,比如调用...

  • iOS基础:block 内如何修改 block 外部变量

    block 原理已有很多优秀的博客介绍过了,这里是对 block 相关知识的复习巩固 在 block 内部修改其外...

  • Block知识小结

    这篇博客将系统整理一下Block相关的知识 首先,先思考一个问题Block能做些什么? Block内部能够读取外部...

  • iOS笔记--Block相关知识

    Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍...

  • iOS相关知识(六)-- block

    1、block的本质 2、block的变量捕获(capture) 为了保证block内部能够正常访问外部的变量,b...

  • 21·iOS 面试题·__block 在 ARC 和 MRC 下

    前言 对于 Block 以及 __block 相关的知识点,之前的面试题已经涉及过:04·iOS 面试题·Bloc...

网友评论

      本文标题:Block 相关知识

      本文链接:https://www.haomeiwen.com/subject/dgpbtltx.html