• iOS 使用Block实现函数回调


    事实上。iOS中的Block就是C++中的函数指针,实现方式都是一样的,以下贴出一个简单的实践。

    首先,创建一个回调的类

    BlockStudy.h

    //
    //  BlockStudy.h
    //  BlockStudy
    //
    //  Created by 杜甲 on 11/11/14.
    //  Copyright (c) 2014 杜甲. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface BlockStudy : NSObject
    
    typedef void (^TestBlock)();
    @property (nonatomic , strong) TestBlock testBlock;
    
    
    - (void)StartBlock;
    @end
    
    BlockStudy.m

    //
    //  BlockStudy.m
    //  BlockStudy
    //
    //  Created by 杜甲 on 11/11/14.
    //  Copyright (c) 2014 杜甲. All rights reserved.
    //
    
    #import "BlockStudy.h"
    
    @implementation BlockStudy
    
    - (void)test
    {
        if (_testBlock) {
            _testBlock();
        }
    }
    
    - (void)StartBlock
    {
        [self performSelector:@selector(test) withObject:nil afterDelay:2.0];
    }
    
    @end
    


    调用类ViewController.m

    //
    //  ViewController.m
    //  BlockStudy
    //
    //  Created by 杜甲 on 11/11/14.
    //  Copyright (c) 2014 杜甲. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "BlockStudy.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        BlockStudy *block = [[BlockStudy alloc] init];
        block.testBlock = ^()
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Block学习" message:@"測试成功" delegate:self cancelButtonTitle:@"取消吧" otherButtonTitles:@"OK", nil];
            [alert show];
            
        };
        [block StartBlock];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    






  • 相关阅读:
    bzoj3505[CQOI2014]数三角形
    COGS103&tyvj1899 [NOIP2002]矩形覆盖
    bzoj4318OSU &tyvj1952 Easy
    tyvj1863[Poetize I]黑魔法师之门
    hook框架frida某个类下的所有方法名字模板
    逆向so文件调试工具ida基础知识点
    linux上安装mitmproxy
    linux配置SOCK5代理
    hook框架frida 绕过fillder证书认证
    LeetCode 455. 分发饼干
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5163440.html
Copyright © 2020-2023  润新知