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

  • 相关阅读:
    学习笔记 MYSQL报错注入(count()、rand()、group by)
    学习笔记 HTTP参数污染注入
    学习笔记 MSSQL显错手工注入
    代码审计入门后审计技巧
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    从上往下打印二叉树
  • 原文地址:https://www.cnblogs.com/yinyakun/p/4047206.html
Copyright © 2011-2022 走看看