block的使用(六)
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
#import <Foundation/Foundation.h>
typedef void(^blockType)();
//1)代碼在ARC中
// 運行結(jié)果 VVVV i = 5,
//2) 代碼在MRC中
// 運行結(jié)果 VVVV i = 5,但是用analyze分析,return bb;有內(nèi)存泄露。MRC下bb是棧block,bb在方法執(zhí)行完成之后會被銷毀掉
// 定義返回值是block類型的函數(shù)
blockType test() {
? ? int i = 5;
? ? blockType bb = ^{
? ? ? ? NSLog(@"VVVV i = %d",i);
? ? };
? ? //return bb;
? ? return Block_copy(bb); // copy拷貝一份block,bb位于堆區(qū)。
}
int main(int argc, const char * argv[]) {
? ? @autoreleasepool {
?? ? ? //接收test的返回值
? ? ? ? blockType b1 = test();
? ? ? ? b1();
?? ? ? ?
? ? ? ? Block_release(b1);
?? ? ? ?
? ? }
? ? return 0;
}
轉(zhuǎn)載于:https://my.oschina.net/u/2418942/blog/625790
總結(jié)
以上是生活随笔為你收集整理的block的使用(六)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Node.js小Httpserver
- 下一篇: JavaScript基础学习--数据类型