黑马程序员技术交流社区
标题:
block代码块问题
[打印本页]
作者:
u37kl
时间:
2016-2-9 13:36
标题:
block代码块问题
typedef void (^blocks);
void main(){
blocks b=^{
}
NSLog(@"%p",b);
int a = 0;
blocks b=^{
NSLog(@"%d",a);
}
NSLog(@"%p",b);
}
作者:
u37kl
时间:
2016-2-9 13:41
不好意思重新提问一遍:
typedef void (^blocks);
void main(){
blocks b1=^{ }
NSLog(@"%p",b);
int a = 0;
blocks b2=^{ NSLog(@"%d",a); }
NSLog(@"%p",b);
}
当定义的block代码块中不使用外部变量时,在常量区;
当使用使用外部变量时,代码块变到堆区,这是怎么回事?
作者:
学以致用表初衷
时间:
2016-2-9 15:47
所以说 变量存储在栈区
而代码块的中的变量 存储在堆区
作者:
Tmac90301
时间:
2016-2-9 16:15
不使用外部变量或只是用了外部静态变量的block是栈block,在栈区,相当于一个全局函数。如果使用了外部自动变量,则是堆block,在堆区
作者:
hezerongrocky
时间:
2016-2-9 21:52
学习了,赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2