OC 中的block

OC 中的block,第1张

简介:block作为消息传递,在oc中的用处非常的广,自定义视图的回调,modal视图的回调,多线程中异步去加载数据等等,它的使用场景和代理有相似的地方,又比代理要广泛的多,所以说,block是每一个程序员都要去掌握的一个知识点.

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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11534912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存