zoukankan      html  css  js  c++  java
  • IOS学习之路--BLOCK

    /*
     1.定义block变量:
     返回值类型 (^block变量名) (参数类型1, 参数类型2, ....);
     
     
     2.给block变量赋值
     block变量名 = ^(参数类型1 参数名称1, .....)
     {
        
     };
     */
    
    
    /*
     1.设置动画属性
     
     2.开始执行动画
     
     3.动画执行完毕
     
     block1 = ^{
        封装了动画开始执行前想做的事情
     };
     
     block2 = ^{
        封装了动画执行完毕后想做的事情
     };
     */
    
    #import <Foundation/Foundation.h>
    
    //typedef int MyInt;
    
    // MyBlock其实就是新的数据类型名称
    typedef int (^MyBlock)(int, int);
    
    /*
     需要掌握:
     1.定义block变量
     2.给block变量赋值
     3.type和block的应用
     */
    
    int main(int argc, const char * argv[])
    {
        MyBlock minus = ^(int a, int b)
        {
            return a - b;
        };
        int d = minus(10,5);NSLog(@"d id %d", d);
        
        
        MyBlock sum = ^(int v1, int v2)
        {
            return v1 + v2;
        };
        
        int e = sum(10, 11);
        NSLog(@"e is %d", e);
        
        
        /*
        int (^minusBlock) (int, int) = ^(int a, int b){
            return a - b;
        };
        minusBlock(10, 5);
        
        
        int (^averageBlock) (int, int) = ^(int a, int b)
        {
            return (a+ b)/2;
        };*/
        
        
        return 0;
    }
    
    void test2()
    {
        int a = 10;
        
        __block int b = 10;
        
        // block内部不能修改默认的局部变量
        // 定义一个block变量
        void (^block) () = ^{
            //a = 11;
            b = 11;
            NSLog(@"b=%d", b);
        };
        
        block();
        block();
        block();
    }
    
    void test()
    {
        // 左边的void:block没有返回值
        // 最右边的() :没有参数
        // 中间的(^)  block的标志,不能少
        void (^myblock)()  = ^{
            int a = 11;
            int b = 11;
            NSLog(@"a=%d, b=%d", a, b);
        };
        myblock();
        
        // 定义一个block变量,变量名是sumBlock
        // 最左边的int:block的返回值是int类型
        // 最右边的(int, int) block接受两个int类型的参数
        int (^sumBlock)(int, int);
        sumBlock = ^(int v1, int v2){
            return v1 + v2;
        };
        
        int sum = sumBlock(10, 11);
        NSLog(@"sum=%d", sum);
    }
  • 相关阅读:
    密码学与安全技术
    分布式系统核心问题
    虚拟机性能监控与故障处理工具
    垃圾收集器与内存分配策略
    Channel
    Buffer
    Reactor
    I/O简介
    HashMap
    装饰者模式
  • 原文地址:https://www.cnblogs.com/xitang/p/3835806.html
Copyright © 2011-2022 走看看