美文网首页
block的简单简介

block的简单简介

作者: 三岁就很乖 | 来源:发表于2017-03-12 15:36 被阅读27次

1、block的声明

void(^block)();

2、block的三种定义

三种方式 = ^(参数){  
}
a.void(^block1)() = ^(){

}
//如果没有参数 参数可以隐藏。如果有参数,定义的时候,必须要写参数,而且必须要有参数变量名
b.
void(^block2)() = ^{
}
void(^block2)(int) = ^(int a) {
}
//bock返回值可以省略,不管有没有返回值都可以省略
c.int(^block3)() = ^int{
  return 3;
}

3、bolck的用处

a. 封装模型方法
b.传值

传值

只要能拿到对方就能传值
顺传:给需要传值的对象,直接定义属性就能传值
逆传:用代理,block

4、block的存储

只要block没有引用外部局部变量,block放在全局区。

MRC管理block:
        只要block引用外部局部变量,block就放在栈区。
        block只能使用copy,不能使用retain,使用retain,block还在栈里面。
ARC管理block:
        只要arc引用外部局部变量,block放在堆里面。
        block使用strong,尽量不要用copy。

5、block会造成循环引用

block会对里面所有强指针变量都强引用一次。

6、其他

a.如果是局部变量,block是值传递。
 int a = 3;
void (^block)() = ^{
  NSLog(@"%d",a);
}
a = 5;
block();

//打印输出a = 5
b.如果是静态变量,block是指针传递```

static int a = 3;
void (^block)() = ^{
NSLog(@"%d",a);
}
a = 5;
block();

//打印输出a = 3

c.如果是全局变量,_ _block修饰的变量,block是指针传递




相关文章

  • block的简单简介

    1、block的声明 2、block的三种定义 3、bolck的用处 传值 4、block的存储 5、block会...

  • iOS-Block 浅谈

    前言:Block 是开发过程中常用便捷的回调方式,本文简单介绍 Block 一、Block 简介 Block 对象...

  • OC中Block的探究

    Block简介 Block 能够让我们的代码变得更简单,能够减少代码量,降低对于 delegate 的依赖,还能够...

  • iOS开发笔记-有关Block

    1.Block简介: 可以简单的理解,Block其实包含两个部分内容: 1)Block执行的代码,这是在编译的时候...

  • Linux 数据镜像软件 DRBD

    一、DRBD 简介及主要功能 简单的说,DRBD (Distributed Replicated Block De...

  • iOS block介绍

    1. 简介 block是将函数及其上下文封装起来的对象。(引用别人的) 定义一个简单的block,在xcode中输...

  • Block简介

    Block是C语言的扩充功能。一言以蔽之,带有局部变量的匿名函数,简单说它就是一个函数指针。 一、语法: 格...

  • iOS-简单两步搞定自定义View

    目录 Block简介/定义Block基本使用Block在C/C++(底层)的数据结构Block的类型 Block简...

  • Block的常用场景

    本文简介 本文主要是总结了block在开发中的几种常用场景,如有不足的地方,还望指正。 Block简介 Block...

  • OC底层探索26、Block 原理

    一、block简介 1、block的三种类型 NSGlobalBlock - 全局 block NSMallocB...

网友评论

      本文标题:block的简单简介

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