美文网首页iOS面试相关
iOS Block截获变量

iOS Block截获变量

作者: 没八阿哥的程序 | 来源:发表于2018-11-01 15:28 被阅读7次

什么是Block

block是将函数及其执行上下文封装起来的对象

关于Block截获变量

int multiplier = 6;
int(^Block)(int) = ^int(int num ){
return num * multiplier ;
};
multiplier = 4;
NSLog("result is%d" ,Block(2) ) ;

来看这道经典的block面试题,它的结果是12还是8?(答案为12)

static int multiplier = 6;
int(^Block)(int) = ^int(int num ){
return num * multiplier ;
};
multiplier = 4;
NSLog("result is%d" ,Block(2) ) ;

而这个答案为8。这是因为:

  • 对于基本数据类型的局部变量截获其值
  • 对于对象类型的局部变量连同所有权修饰符一起截获
  • 指针形式截获静态变量
  • 不截获全局变量和静态全局变量

相关文章

网友评论

    本文标题:iOS Block截获变量

    本文链接:https://www.haomeiwen.com/subject/yniatqtx.html