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 是怎么存储的,

  • 相关阅读:
    Ext.MessageBox.show的用法
    DecimalFormat很强大
    java根据模板导出excel和excel的一些知识
    数组分成若干个数组
    SQL SERVER 创建视图
    java 中怎么根据当前时间得到上周一和上周五的日期
    复选框提交后不合格还在选中状态
    sql语句的学习(2)
    sql语句的学习(1)
    利用LinkedList实现洗牌功能
  • 原文地址:https://www.cnblogs.com/yinyakun/p/4047206.html
Copyright © 2011-2022 走看看