zoukankan      html  css  js  c++  java
  • IOS Block的本质

    #import "HMViewController.h"
    #import "HMPerson.h"
    
    @interface HMViewController ()
    
    @end
    
    @implementation HMViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        
        // 1.如果没有对block进行copy操作,block就存储于栈空间
        // 2.如果对block进行copy操作,block就存储于堆空间
        
        // 3.如果block存储于栈空间,不会对block内部所用到的对象产生强引用
        // 4.如果block存储于堆空间,就会对block内部所用到的对象产生强引用
        
    //    HMPerson *p = [[HMPerson alloc] init];
    ////    __unsafe_unretained typeof(p) weakP = p;
    //    __block typeof(p) weakP = p;
    //    p.testBlock = ^{
    //        [weakP run];
    //    };
    //    
    //    [p release];
        
        __block int age = 10;
        void (^block)() = ^{ // 值捕获
            NSLog(@"age=%d", age);
        };
        
        age = 20;
        
        block();
    }
    
    @end
  • 相关阅读:
    每日总结2.26
    《梦断代码》阅读笔记三
    每日总结2.25
    每日总结2.24
    每日总结2.23
    每日总结2.22
    每日总结2.19
    《梦断代码》阅读笔记二
    Java-11 形参和实参
    Java-10 final用法
  • 原文地址:https://www.cnblogs.com/liuwj/p/6752714.html
Copyright © 2011-2022 走看看