Block之内存管理

对block调用复制,有以下几种情况:

1.对全局区的block调用copy,会返回原指针,并且这期间不处理任何东西(至少目前的内部实现是这样);

2.对栈上的block调用copy,每次会返回新复制到堆上的block的指针,同时,所有__block变量都会被复制至堆一份(多次拷贝,只会生成一份)。

3.对已经位于heap上的block,再次调用copy,只会增加block的引用计数。

为什么我们不讨论retian的行为?原因是并没有Block_retain()这样的函数,而且objc里面的retain消息发送给block对象后,其内部实现是什么都不做。

参考文章:

http://mobile.51cto.com/hot-403914.htm

http://my.oschina.net/panyong/blog/304134

http://www.tanhao.me/pieces/310.html/

posted @ 2015-05-18 13:45  轻风&星  阅读(125)  评论(0编辑  收藏  举报