Block 为什么要用 copy 修饰?

Block 为什么要用 copy 修饰?

先说结论:在ARC下 block 可以用copy 或者 strong来修饰。

为什么 block 要用 copy 来修饰?

因为block变量默认是声明为栈变量的,为了能够在block的声明域外使用,所以要把block拷贝(copy)到堆。

block本质是对象,可以retain,和release。但是,block在创建的时候,它的内存是分配在栈上的,而不是在堆上。他本身的作用域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。因为栈区的特点就是创建的对象随时可能被销毁,一旦被销毁后续再次调用空对象就可能会造成程序崩溃。在对block进行copy后,block存放在堆区. 使用retain也可以,但是block的retain行为默认是用copy的行为实现的,

ARC下, 使用copy与strong其实都一样, 因为block的retain就是用copy来实现的, 所以在ARC下 block使用copy 和 strong 都可以

相关数据流

六硼化镧灯丝/denka
365足球提现

六硼化镧灯丝/denka

⌚ 08-18 👁️‍🗨️ 5774
世界上首家以温度为概念的时尚服装品牌ERAL NORTH长沙启幕
365bet娱乐网址

世界上首家以温度为概念的时尚服装品牌ERAL NORTH长沙启幕

⌚ 06-30 👁️‍🗨️ 7562