美文网首页
第二章 2.2.5 截获的自动变量

第二章 2.2.5 截获的自动变量

作者: MrSYLong | 来源:发表于2018-08-04 15:41 被阅读8次

上两节截获自动变量值与__block说明符,在Block中将值赋值给截获的外部基础类型的自动变量,就会产生编译错误。
那么截获OC对象,调用变更该对象的方法那?

// 示例
id array = [[NSMutableArray alloc] init];

void (^blk) (void) = ^{
    id obj = [[NSMutableArray alloc] init];
    
    [array addObject:obj];
};

blk();

说明:
经测试,上面代码是没有问题的。

那么截获OC对象,给截获的对象直接赋值那?

// 示例
id array = [[NSMutableArray alloc] init];

void (^blk) (void) = ^{
    
    array = [[NSMutableArray alloc] init];
};

blk();

说明:
经测试,会出现编译错误。

这是为什么?
上面示例代码中,截获的变量值为NSMutableArray类的对象。如果用C语言描述,就是截获NSMutableArray类对象用的结构体实例指针。虽然赋值给截获的自动变量array的操作会产生编译错误,但使用截获的值却不会有任何问题。

相关文章

  • 第二章 2.2.5 截获的自动变量

    上两节截获自动变量值与__block说明符,在Block中将值赋值给截获的外部基础类型的自动变量,就会产生编译错误...

  • __block

    __ block Block中所使用的被截获自动变量就如“带有自动变量值的匿名函数”所说,仅截获自动变量的值,Bl...

  • Block实现原理

    Block是带有自动变量值的匿名函数; 带有自动变量值在Block中表现为截获自动变量值; 自动变量值截获只能保存...

  • Block(匿名函数)

    一、语法格式 二、截获自动变量值和__block修饰符 block的自动变量截获只针对block中使用的自动变量。...

  • Blocks

    简述 Blocks:带有自动变量(局部变量)的匿名函数。 函数指针与Block 对变量的截获 所谓截获自动变量值意...

  • Block原理分析(1)

    前情提要 1.闭包、Block是一个带有自动变量值(可以截获自动变量值)的匿名函数。截获的含义是保存该自动变量的瞬...

  • iOS中block的理解

    本文的主要内容涉及block的含义,完整的表达式,截获自动变量值,截获自动变量,内存管理以及避免循环引用,另附上2...

  • Block

    blocks是C语言的扩充功能。blocks是带有自动变量(局部变量)的匿名函数。 截获自动变量 结果:val =...

  • iOS Block学习笔记(五) -- Block截获静态变量(

    上一节分析了Block截获int, char*类型自动变量的源码, 发现Block内部用成员变量的形式保存了被截获...

  • block截获的自动变量

    很简单,分两种情况。 第一种情况,该变量没有__block修饰。此时block截获的是block定义处对该变量的一...

网友评论

      本文标题:第二章 2.2.5 截获的自动变量

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