Block笔记(1) | 您所在的位置:网站首页 › block是指什么代码 › Block笔记(1) |
Block系列文章—————————————
Block笔记(1)—— 基本认识 Block笔记(2)—— 底层结构 Block笔记(3)—— 基础类型的变量捕获 Block笔记(4)—— Block的类型 Block笔记(5)—— 对象类型的auto变量捕获 Block笔记(6)— __block的深入分析 ————————————————————Block是什么 通俗的理解:Block就是将一些代码封装起来,以便在将来某个时候被使用,如果你不去调用Block,Block内部封装的代码就不会执行。举一个简单的例子,下面在main函数中定义一个最简单的Block int main(int argc, const char * argv[]) { @autoreleasepool { ^{ NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); }; return 0; } ********************** 运行结果 ************************ Program ended with exit code: 0运行程序运行可以看到Block内的代码是没有运行的,因为没有调用。Block的使用也很简单,可以像函数一样被使用。加上()就代表调用,如下 int main(int argc, const char * argv[]) { @autoreleasepool { ^{ NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); }(); return 0; } ********************** 运行结果 ************************ 2019-05-28 17:18:56.992746+0800 Interview03-block[2640:180864] I am a block! 2019-05-28 17:18:56.992924+0800 Interview03-block[2640:180864] I am a block! 2019-05-28 17:18:56.992939+0800 Interview03-block[2640:180864] I am a block! 2019-05-28 17:18:56.992947+0800 Interview03-block[2640:180864] I am a block! Program ended with exit code: 0如果上面写的太简练不习惯的话,通常大家可能是这么写 int main(int argc, const char * argv[]) { @autoreleasepool { void (^testBlock)(void) = ^{ NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); NSLog(@"I am a block!"); }; testBlock(); ***** |
CopyRight 2018-2019 实验室设备网 版权所有 |