Block是什么
block 实际上就是 Objective-C 语言对于闭包的实现,是一个对象,拥有isa指针。
block的Copy
block中的isa指向的是该block的Class。
_NSConcreteStackBlock 栈上创建的block
_NSConcreteMallocBlock 堆上创建的block
_NSConcreteGlobalBlock 作为全局变量的block
不使用外部变量的block是全局block
使用外部变量并且未进行copy操作的block是栈block
对栈block进行copy操作,就是堆block,而对全局block进行copy,仍是全局block
即如果对栈Block进行copy,将会copy到堆区,对堆Block进行copy,将会增加引用计数,对全局Block进行copy,因为是已经初始化的,所以什么也不做。
参考:https://www.jianshu.com/p/0e1a0e7e988d
https://blog.ibireme.com/2013/11/27/objc-block/
网友评论