#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool{
/*
Block是iOS中一种比较特殊的数据类型
Block的作用
-用来保存某一段代码,可以在恰当的时间取出来调用
-功能类似函数和方法
Block和函数一样,
有返回值,有形参
有返回值,没形参
无返回值,有形参
无返回值,无形参
*/
/*
void代表block将来保存的代码没有返回值
()代表block将来保存的代码没有形参
(^roseBlock)代表roseBlock是一个block变量,可以用于保存一段block代码
*/
void (^roseBlock)();
roseBlock = ^{
NSLog(@"roseBlock");
};
//调用block
roseBlock();
}
return 0;
}
练习
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool{
//先定义在初始化
void (^numBlock)();
numBlock = ^{
NSLog(@"numBlock");
};
numBlock();
//定义的同时初始化
void (^Block)() = ^{
NSLog(@"block");
};
Block();
//无参有返回
NSString *
(^StrBlock)()= ^{
return [NSString stringWithFormat:@"StrBlock"];
};
NSLog(@"%@",StrBlock());
//有参数有返回
int (^sumBlock)(int ,int )= ^(int value1 ,int value2)
{
return value1+value2;
};
NSLog(@"sumBlock = %i",sumBlock(20,30));
NSString
*(^stringBlock)(NSString*)= ^(NSString* str){
NSString *s = [NSString stringWithFormat:@"%@",str];
NSLog(@"%@",s);
return s;
};
stringBlock(@"lxc");
}
return 0;
}
用typedf给block起别名
#import <Foundation/Foundation.h>
typedef int(^calculate)(int,int);
int main(int argc, const char * argv[]) {
@autoreleasepool{
calculate sumBlock =^(int value1,int value2)
{
return value1 +value2;
};
NSLog(@"sumBlock =%i",sumBlock(20,10));
calculate subBlock =^(int value1 ,int value2)
{
return value1 - value2;
};
NSLog(@"subBlock =%i",subBlock(20,10));
}
return 0;
}
Block的应用场景
#import <Foundation/Foundation.h>
void goToWorkDay1();
int main(int argc, const char * argv[]) {
@autoreleasepool{
goToWorkDay1();
}
return 0;
}
/*
block的应用场景:前后都一样中间不一样的时候可以用block
下面函数中void goToWork(void (^myBlock)())方法中包含一个block
需要在当前方法中实现block
在void goToWorkDay1()调用goToWork myblock会当做形参传递到函数中
*/
void goToWork(void (^myBlock)())
{
NSLog(@"吃饭");
myBlock();
NSLog(@"睡觉");
}
void goToWorkDay1()
{
goToWork(^{
NSLog(@"敲代码");
});
}
void goToWokrDay2()
{
goToWork(^{
NSLog(@"打豆豆");
});
}
Block
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 简介 block可以当做匿名函数,可以在两个对象间将语句当做数据来进行传递。具有封闭性closure,方便取得上下...
- 使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首...
- 本章目录 Block截取自动变量 __block说明符 Block存储域 __block变量存储域 Block中截...
- __block修饰对象类型 编译结果: 结构示意图: __block修饰的对象数据类型的变量也能实现block内外...