zoukankan      html  css  js  c++  java
  • OC语言Block

    OC语言Block

    一、Block

    (一)简介 

    Block是什么?苹果推荐的比较特殊的数据类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。

    Block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。

    Block的应用:(1)动画(2)多线程(3)集合遍历(4)网络请求回调

     

    标识符 ^

    (二)基本使用

    (1)定义Block变量

    Int (^SumBlock)(int,int);//有参数,返回值类型为int

    Void (^MyBlock)();//无参数,返回值类型为空

    (2)利用block封装代码

      

    (3)Block访问外部变量

    1)Block内部可以访问外部变量;

    2)默认情况下,Block内部不能修改外部的局部变量的值;

    3)给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改;

        __block int sum = 10;

    4)但是全局,static修饰的局部变量可以在Block内部进行修改。

     

    (4)利用typedef定义block类型(和指向函数的指针很像)定义别名

    例如:基本数据类型定义别名

    typedef int MyInt;(MyInt 是别名)

    typedef int(^MyBlock)(int ,int);(MyBlock 是别名,存储的代码返回值为 int ,接受2个int 类型参数)

    以后就可以利用这种类型来定义block变量了。

    MyBlock a,b;  

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

    MyBlock b2=^(int n1,int n2){return n1*n2;};

     

      (5) Blocks的赋值 

    在声明的同时定义变量,然后赋值

    int (^MySum)(int,int) = ^(int a,int b) {

      return a + b;

    };

    l也可先用typedef先声明类型,再定义变量进行赋值

    typedef int (^MySum)(int,int);

    MySum sum = ^(int a,int b) {

      return a + b;

    }; 

  • 相关阅读:
    JAVA基础:JAVA代码编写的30条建议
    Oracle学习之三 程序控制结构
    ExtJs 常用代码片段(7.30更新)
    ExtJs4 之数据模型
    .NET 大杂烩
    .NET 导出Excel
    Javascript实现IE直接打印
    C# Timer用法及实例
    AjaxPro实现无刷新多级联动实例
    VB6.0输入文本写进UTF8格式的文本文件
  • 原文地址:https://www.cnblogs.com/ShaoYinling/p/4564467.html
Copyright © 2011-2022 走看看