iOS 使用Block实现函数回调

来源:互联网 发布:形容傻天真网络词 编辑:程序博客网 时间:2024/04/29 18:07

其实,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 : NSObjecttypedef 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






0 0
原创粉丝点击