oc的block请原谅我到用时一直打不出来
一、不定义typedef
1.方法block定义:
-(void)方法名:(返回类型(^)(参数))block名称;
如下:
- (void)action:(void(^)(UIView *tipView))action;
- (void)action:(void(^)(void))action;//如果没带参数就写void
2.属性定义:
@property (nonatomic, copy) 返回类型(^block名称)(参数);
如下:
@property (nonatomic, copy) void(^action)(UIView *tipView);//带参
@property (nonatomic, copy) void(^action)(void);//不带参写void
3. 变量定义
返回类型(^变量名)(参数类型) = ^(形参){
//do somting
}
如下:
BOOL(^block)(NSInteger,NSString*) = ^(NSInteger a,NSString *str){
if (a == 0 && str) {
return NO;
}
return YES;
};
block(1,@"str");
返回类型和参数若无,则要显式写void
void(^block)(void) = ^{
NSLog(@"action");
};
block();
二、使用typedef
先声明
typedef 返回类型(^block名称)(参数);
如下:
typedef void(^Myblock)(UIView *tipView);
使用:
@property (copy) Myblock myBlock;
- (void)action:(Myblock)action;