zoukankan      html  css  js  c++  java
  • iOS 快语句(block)的内存浅析

    一, 简介

        // 默认情况下,block是在栈中,随时可能被回收

        void (^hgBlock)() = ^{

            NSLog(@"一个简单的快语句");

        };

        

        // 对快语句做一次cope操作以后,block的内现存就会放到堆里面.

        [hgBlock copy];

        // 或者

    //    Block_copy(hgBlock);// 用于MRC机制下

    二,开始分析

    /**

        block是用copy修饰词来管理内存

        block即可以放在堆中,也可以使放在栈中.

        

     */

    @property (nonatomic, copy) void (^hgBlock)();

    @property (nonatomic, copy) NSString* name;

     

    使用快语句场景一

    - (instancetype)init {

        if (self = [super init]) {

            __weak typeof(self) weakSelf = self;

            self.hgBlock = ^{

                __strong typeof(weakSelf) strongSelf = weakSelf;

                NSLog(@"%@", strongSelf.name);

            };

        

        }

        return self;

    }

    使用快语句场景二

    // 创建一个person对象

        HGPerson* person = [[HGPerson alloc] init];

        

        // 弱指针

        __weak typeof(person) weakPerson = person;

        person.hgBlock = ^{

            

            // 若指针转成强指针

            __strong typeof(weakPerson) strongPerson = weakPerson;

            

            strongPerson.name = @"HG";

        };

  • 相关阅读:
    可以让你少奋斗十年的工作经验 .
    MFC多线程编的可能
    MFC中使用ADO方式连接数据库
    vc 获取当前时间
    mfc EDIT字体颜色
    使用css让div半透明
    -----日积月累-----
    TP框架 ---空控制器和空操作
    TP框架常用配置
    TP框架主要文件夹注释
  • 原文地址:https://www.cnblogs.com/iOS771722918/p/4852772.html
Copyright © 2011-2022 走看看