Block学习

作者: Mr__Peng__ | 来源:发表于2019-02-23 13:56 被阅读24次
block和函数指针的理解;
相似点
  1. 函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段
  2. 函数指针类型和Block类型都可以作为变量和函数参数的类型。(typedef定义别名之后,这个别名就是一个类型)
不同点
  1. 函数指针只能指向预先定义好的函数代码块(可以是其他文件里面定义,通过函数参数动态传入的),函数地址是在编译链接时就已经确定好的。
  2. Block本质是Objective-C对象,是NSObject的子类,可以接收消息。
  3. 函数里面只能访问全局变量,而Block代码块不光能访问全局变量,还拥有当前栈内存和堆内存变量的可读性(当然通过__block访问指示符修饰的局部变量还可以在block代码块里面进行修改)
  4. 从内存的角度看,函数指针只不过是指向代码区的一段可执行代码,而block实际上是程序运行过程中在栈内存动态创建的对象,可以向其发送copy消息将block对象拷贝到堆内存,以延长其生命周期

相关文章

  • iOS开发-由浅至深学习block

    iOS开发-由浅至深学习block iOS开发-由浅至深学习block

  • iOS Block详解

    学习Block的章节 Block介绍(源码解析) 代码被编译后: __MCBlock__method_block_...

  • block学习

    block学习 根据网上的block各种大神的资料,加入自己的理解。 一、初识block 1. block作用 b...

  • ObjC的Block中使用weakSelf/strongSelf

    学习block帖子ObjC的Block中使用weakSelf/strongSelf @weakify/@stron...

  • block学习

    1,在传值方定义一个block typedefvoid(^requstBlock)(NSString* str);...

  • block学习

    通用的 block 声明de的结构体 main 里面的这个block的描述的结构体 main 里面的这个block...

  • Block学习

    之前一直都只知道用block,没有对block进行过总结和深入的理解。 个人觉得block就是一个介于变量和函数中...

  • block学习

    block为什么是用copy修饰 block属性的声明,首先需要用copy修饰符,因为只有copy后的block才...

  • Block 学习

    block 构成部分 ^(参数列){行为主体}; 例如:^(int a) {return a*a}; bl...

  • Block学习

    Block 让我们先来了解下Block是怎么定义的:返回值类型(^block变量名)(形参列表) = ^(形参列表...

网友评论

    本文标题:Block学习

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