block 是c语言函数 是一个匿名的函数,基本的定义格式如下所示
block 的使用有两点需要注意的:1.block 如果引用了外部的变量,会对引用的变量做一次copy,此时引用计数会+1
2.block 不可以修改局部的变量,不过要修改的话,要使用__block 来修饰局部变量
block 在ARC中,是保存在堆区,在MRC中是保存在栈区,所以在MRC中需要使用使用copy 来记录block属性,在ARC中的话,是Strong,或者是copy都可以
block呢存在的一个很大的问题,就是循环引用,如果我们掌握了它循环引用的原因,那么以后再项目中,我们就可以大胆,放心的去使用了.
造成循环引用是有3种情况,"self . ",属性记录block,以及成员变量,成员变量一定不要出现在block中,
你可以在局部程序块中说明一些变量,这种变量被称为局部变量,它们只能在局部程序块的开始部分说明,并且只在说明它的局部程序块中有效。如果局部变量与局部程序块以外的变量重名,则前者优先于后者。
下面是一个使用局部程序块的例子:
#include <stdio.h>
void main(void)
void main()
{
/ * Begin local block for function main() * /
int test_ var = 10
printf("Test variable before the if statement: %d\n", test_var)
if (test_var>5)
{
/ * Begin local block for "if" statement * /
int test_ var = 5
printf("Test variable within the if statement: %d\n",
test_var)
{
/ * Begin independent local block (not tied to
any function or keyword) * /
int test_var = 0
printf (
"Test variable within the independent local block: %d\n",
test_var)
}
/ * End independent local block * /
printf ("Test variable after the if statement: %d\n", test_var)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)