清华大佬耗费三个月吐血整理的几百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;
}