zoukankan      html  css  js  c++  java
  • block(八)作用域

    //闭包

        NSString* s =@"123";

       void (^block)() = ^() {

           NSLog(@"%@",s);

        };

        block();// 1

        s =@"abc";

        block();// 2

    结果:

    123

    123

    //__block破坏了闭包,扩大了变量在块结构中的局部作用域为全局的

        __blockNSString* s = @"123";

       void (^block)() = ^() {

           NSLog(@"%@",s);

        };

        block();//3

        s =@"abc";

        block();//4

    结果:

    123

    abc

    首先,没有__block标识的变量,其状态会在块结构创建的时候,已经保存在了块里了.形成了独立的结构,内部变量外部都无法访问(闭包).利用c语言的解释 1可以理解为block1函数

    void block1(){ 

    NSString* s = @"123";

     NSLog(@"%@",s);

     }

    而例2中__block标示的变量,会将变量的作用域变大.s相当于变成全局的作用域.

  • 相关阅读:
    欧拉函数
    新博客地址
    socket编程
    文件操作
    python安装扩展”unable to find vcvarsall.bat“的解决办法
    PYTHON以及插件安装
    梯式结构
    PHPSTORM配置
    CSRF攻击
    js的一些奇葩用法
  • 原文地址:https://www.cnblogs.com/isItOk/p/8108532.html
Copyright © 2011-2022 走看看