zoukankan      html  css  js  c++  java
  • 我所了解的block

    本文章参照李明杰老师的视频.

    使用block 首先要会声明和实例化block

    block  的声明:

    block  分为 有返回值有参数,没返回值有参数,有返回值没参数,没返回值没参数  几种情况

    有返回值 有参数的 int (^argReturnBlock)(int,int);

    其他几种分别是 int (^ReturnBlock)();    

    void (argBlock)(int,int);

    void (nonBlock)();

    然后实例化

    举一个例子:

    int (int argReturnBlock)(int,int);

    argReturnBlock = ^(int v1,int v2){

      return v1 + v2;

    };

    最后是调用

    int result = ArgReturnBlock (13,34);

    /////////////////////////////////////////////////////////

    block 的回调的使用例子;

    监听按钮是否被点击了

     MyButton * btn = [[MyButton alloc] init];
       
        btn.buttonBlock = ^(MyButton *testbtn){
            NSLog(@"%@___被店家了",testbtn);
        };
        
        
        
        
        [btn click];
    

     在调用click 方法的时候,会回调到上面的block  方法中去.

    #import <Foundation/Foundation.h>
    
    @class MyButton;
    
    typedef void(^listenBlock)(MyButton *sender);
    
    @interface MyButton : NSObject
    
    @property (nonatomic,assign) listenBlock buttonBlock;
    
    
    - (void)click;
    @end
    

     在

    #import "MyButton.h"
    
    @implementation MyButton
    
    - (void)click
    {
        _buttonBlock(self);
    }
    @end
    

    程序运行顺序是当调用click  方法的时候,

    会跳转到MyButton.m 中的click 方法中,在这个方法中有_buttonBlock(self);

    就会跳转到_buttonBlock 声明的地方,就是外面实例化该block 的地方.

    block  的用途:

    再有block 是怎么存储的,

  • 相关阅读:
    PAT 甲级 1002 A+B for Polynomials (25 分)
    数字提取——C语言
    粒子动画——Pygame
    李白打酒——C++
    C语言输出格雷码
    特殊篮子问题——C语言暴力破解
    黑白迷宫问题——深度优先搜索算法
    最近素数问题——C语言
    巧克力分配问题——C语言
    离散数学——逻辑推理系统
  • 原文地址:https://www.cnblogs.com/yinyakun/p/4047206.html
Copyright © 2011-2022 走看看