block的使用(六)

淺唱寂寞╮ 提交于 2019-12-10 05:24:47

#import <Foundation/Foundation.h>

typedef void(^blockType)();


//1)代码在ARC

// 运行结果 VVVV i = 5

//2) 代码在MRC

// 运行结果 VVVV i = 5,但是用analyze分析,return bb;有内存泄露。MRCbb是栈blockbb在方法执行完成之后会被销毁掉

// 定义返回值是block类型的函数

blockType test() {

    int i = 5;

    blockType bb = ^{

        NSLog(@"VVVV i = %d",i);

    };

    //return bb;

    return Block_copy(bb); // copy拷贝一份blockbb位于堆区。

}


int main(int argc, const char * argv[]) {

    @autoreleasepool {

       //接收test的返回值

        blockType b1 = test();

        b1();

        

        Block_release(b1);

        

    }

    return 0;

}


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!