- block类似于函数指针,能实现函数回调,
- 下面是一个男朋友委托女朋友洗衣服的简单代理:
- 分析:Man是被代理,需要委托Girl对象
- 如果要实现回调,Man需要有一个block类型的对象,并拥有block的调用,而Girl是代理方,要实现洗衣服这件事,Girl需要有block的代码实现部分
- 具体代码如下:
- // Man.h
- #import <Foundation/Foundation.h>
- typedef void (^Funblock)(NSInteger);
- @interface Man : NSObject
- @property(nonatomic,copy)Funblock myblock;
- -(void)ask;
- @end
- // Man.m
- #import "Man.h"
- @implementation Man
- -(void)ask{
- _myblock(10);
- }
- @end
- // Girl.h
- #import <Foundation/Foundation.h>
- @interface Girl : NSObject
- -(void)wash;
- @end
- // Girl.m
- //
- #import "Girl.h"
- #import "Man.h"
- @implementation Girl
- -(void)wash{
- Man *m=[[Man alloc] init];
- m.myblock=^(NSInteger count){
- NSLog(@"洗了%ld件衣服",count);
- };
- [m ask];
- }
- @end
- // main.m
- #import <Foundation/Foundation.h>
- #import "Man.h"
- #import "Girl.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // insert code here...
- Girl *g=[[Girl alloc] init];
- [g wash];
- }
- return 0;
- }
来源: http://www.phpxs.com/code/1006541/