• OC-Block


    1.作用:
    Block用来保存一段代码,方便程序随时调用,标志为^。
    定义Block变量:

    void (^名称)(形参 ) = ^{
    }
    eg:

    int (^myblock)(int,int) = ^(int a,int b){
           return a+b;
    };
    

    利用block调用block内部代码:myblock();

    (1)定义block变量
    1> int (^sumblock)(int ,int ); // 有形参
    2> void(^myblock)(); // 无形参

    (2)利用block封装代码3种方法
    1> 有形参
    eg:

    ^(int a, int b){
          return a - b;        
    }; // 有形参
    
    

    2>无形参

    ^( ){
            NSLog(@"-------");   
    }; // 无形参
    

    3>无形参

    ^{
         NSLog(@"-----");
    }; // 无形参
    

    (3)block访问外面变量
    1> block内部可以访问外面的变量

    2>默认情况下,block不能修改外面的局部变量。
    eg:

    int b = 15;
    void (^myblock)=^{
         block b;// 如果在myblock在局部变量前声明_block,则可以直接修改
         b = 16; // 不能直接修改外部的局部变量、
    }
    

    3> 局部变量加上__block,则block内部变量可以修改此局部变量

    (4)利用typedef定义block类型
    typedef int (^myblock)(int , int ) ; // myblock是block的名字 有形参

    2.block跟函数比较:

    1>相同点
    (1)可以保存代码
    eg:

    void(^myblock)()
    {
         NSLog(@"----------"); // 保存此段代码块
    };
    

    (2)有返回值
    eg:

    int (^myblock)(int,int) = ^(int a,int b){
         return a+b;
    };
    

    上述代码返回值为int类型

    (3)有形参
    eg:

    int (^myblock)(int,int) = ^(int a,int b){
          return a+b;
    };
    

    上述代码形参为a和b
    4)调用方式一样
    eg:
    myblock(10,11 );

    2>不同点
    (1)block的标识符是^,而函数没有
    (2)block默认情况下不能修改局部变量,而函数在默认情况下可以修改成员变量。
    (3)在block情况下,当语句结束时,需要在大括号外部添加分号,而函数不需要。

    3.总结:
    优点:可以方便程序随时调用某段代码或者某个功能,提高了程序编写效率,减少了程序的垃圾代码。

  • 相关阅读:
    WebLogic10 & MyEclipse 配置(转)
    java中的接口隔离(ISP)
    java多线程之 wait(),notify(),notifyAll()
    Windows Server 2008 R2终端服务器激活方法
    [zt]PHP+jQuery+Ajax实现用户登录与退出
    USACO Window AreaDFS矩形切割
    eWebEditor在IE8,IE7下所有按钮无效之解决办法
    [zt]【HoorayOS】开源的Web桌面应用框架——安装部署
    javascript Date format(js日期格式化)
    web design
  • 原文地址:https://www.cnblogs.com/wlios/p/4631899.html
Copyright © 2020-2023  润新知