首页 > 移动平台 > 详细

iOS 快语句(block)的内存浅析

时间:2015-10-02 22:24:39      阅读:444      评论:0      收藏:0      [点我收藏+]

一, 简介

 

    // 默认情况下,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";

    };

 

技术分享

 

iOS 快语句(block)的内存浅析

原文:http://www.cnblogs.com/iOS771722918/p/4852772.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!