block实现代理

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

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;
}