block像c中的函数指针
声明 :void(^myBlock)(void);
实现:myBlock = ^void(void){ };
调用:myBlock();
block的基本命名格式
1.无参无返回值
void(^block)() = ^(){
NSLog(@"block");
};
block();
2.有参无返回值
void(^block)(NSString*) = ^(NSString* prarameter){
NSLog(@"%@",prarameter);
};
block(@"block");
3.无参有返回值
NSString*(^block)() = ^NSString*(){
return @"block";
};
NSLog(@"%@",block());
4.有参有返回值
NSString*(^block)(NSString*) = ^(NSString* prarameter){
return prarameter;
};
NSLog(@"%@",block(@"block"));
typedef
因为书写麻烦,可以用typedef,这样可以让程序简洁 易懂
1.给无参无返回的block取名myBlock
typedef void(^myBlock)();
2.block的声明和实现 调用
myBlock block = ^(){ NSLog(@"block"); };
block();
应用:
1.作为方法的参数
-(void)mmXbloc:(void(^)())block{ block(); }
[对象 mmXbloc:^{ }];
2.作为对象的成员属性 可用于反向传值<****> 小举例一下,直接上源码,记得当时这个block烦了我很久 网上也没找到好的例子,现在自己懂了点点,写个demo好了
新建一个类
.h文件内容
.m文件内容
上个界面对block进行赋值