IOS Block的回调

//  Student.h

#import <Foundation/Foundation.h>

@interface Student : NSObject
- (void)PlayBeforeExam:(void(^)(NSString*))TakingMakeUpExam Punish:(void(^)(void))CompletionHandler;
@end

//  Student.m

#import "Student.h"

@implementation Student
- (void)PlayBeforeExam:(void (^)(NSString *))TakingMakeUpExam Punish:(void(^)(void))CompletionHandler{
    NSLog(@"play with my girlfriend!");
    NSLog(@"one month later...");
    /*方法执行完毕之后在某个时机调用block*/
    TakingMakeUpExam(@"english");
    CompletionHandler();
}
@end

- (void)viewDidLoad {
    [super viewDidLoad];

    Student *Zhangsan = [Student new];
    [Zhangsan PlayBeforeExam:^(NSString *English) {
        NSLog(@"Zhangsan is taking %@ make-up exam, but failed again!",English);
    }Punish:^{
        NSLog(@"Break Up!");
    }];

}

2016-04-21 00:33:31.335 callback[1520:131334] play with my girlfriend!
2016-04-21 00:33:31.350 callback[1520:131334] one month later...
2016-04-21 00:33:31.350 callback[1520:131334] Zhangsan is taking english make-up exam, but failed again!
2016-04-21 00:33:31.350 callback[1520:131334] Break Up!

Block回调执行顺序:ViewDidLoad---张三执行考前玩的方法---打印和女朋友玩,打印一个月后---调用参加补考这个block---执行参加补考这个block,即张三参加英语补考又挂了---调用惩罚这个block---执行惩罚这个block,即分手。

写的不对的地方,希望看到的朋友指正。

时间: 2024-10-10 19:49:18

IOS Block的回调的相关文章

IOS开发- 用block实现回调

在IOS开发中经常会用到回调的情况,下面介绍如何用block实现回调. 1 #import <Foundation/Foundation.h> 2 3 @interface BLock : NSObject 4 5 + (void)getBlock:(void (^)(NSString *))someblock; 6 7 @end BLock.h 1 #import "BLock.h" 2 #import <Foundation/Foundation.h> 3

iOS block从零开始

iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void (^myBlock)(int a) = ^(int a){ NSLog(@"%zd",a); }; NSLog(@"旭宝爱吃鱼"); myBlock(999); 输出结果: 2016-05-03 11:27:18.571 block[5340:706252] 旭宝爱吃鱼

ios编程之回调机制

ios编程之回调机制详解:   ———————————————— 函数/方法/block块一系列概念: 函数在大部分高级语言中都是个重要的概念,函数实现就是对一段代码的封装,我们一般会为了完成某一个业务功能或编程逻辑而需要组织数行代码,而这数行代码还有可能被使用多次,所以将它们封装成一个函数,每一次的执行我们称之为调函数或函数调用. 在C程序中,我们知道程序是从main函数开始执行,执行完main函数就退出程序,其实我们程序员很少去跟踪整个程序的执行流,一个程序(一段二进制代码)如何从加载到运行

写给喜欢用Block的朋友(ios Block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/38090205 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 本文不讲block如何声明及使用,只讲block在使用过程中暂时遇到及带来的隐性危险. 主要基于两点进行演示: 1.block 的循环引用(retain cycle) 2.去除block产生的告警时,需注意问题. 有一次,朋友问我当一个对象中的b

(译)IOS block编程指南 1 介绍

Introduction(介绍) Block objects are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block ca

ios Block学习

ios block 回调传值,回调事件, 直接上代码 在firstVC里面的tableView 点击方法 ,里面点击跳到另一个nextVC,然后返回后的firstVC后回调值 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NextViewController *next=[[NextViewController alloc]init]; __block Nex

[IOS Block和delegate的对比]

原文:http://blog.sina.com.cn/s/blog_9e8867eb0102uykn.html 这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东. 委托和block是IOS上实现回调的两种机制.Block基本可以代替委托的功能,而且实现起来比较简洁,比较推荐能用block的地方不要用委托. 本篇的demo和前一篇是同一个,可以到github上下载不同的版本, 源码下载地址: https://github.com/pony-maggie/DelegateDem

IOS Block详解

这是我原先写的OC中关于协议和代理的文章,建议大家阅读此篇文章的时候先阅读此文章,便于大家理解:  IOS Protocol与Delegate详解(一)  IOS Protocol与Delegate详解(二) 官方中对于Block的用途为:  You can use blocks to compose function expressions that can be passed to API, optionally stored, and usedby multiple threads. Bl

利用block完成回调,小demo一个

利用block完成回调,小demo一个.闲话少说,直接上代码了!O(∩_∩)O~ TestObject.h #import <Foundation/Foundation.h> typedef void (^FinishBlock)(NSString *backStr); @interface TestObject : NSObject //能进行回调的方法 - (void)playSomeTime:(FinishBlock)block; @end TestObject.m #import &q