zoukankan      html  css  js  c++  java
  • iOS 简单的 block & 内存泄漏问题

     
    注意 : block 用 copy 引用 
     
    typedef int (^MyBlock)(int, int);

    void play()

    {

        NSLog(@"play mp3");

    }

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

    {

        @autoreleasepool {

            

            MyBlock sumBlock =  ^(int a, int b){

                return  a + b;

            };

            

            MyBlock minusBlock =  ^(int a, int b){

                return  a - b;

            };

            

            int r = minusBlock(10, 2);

            

            NSLog(@"%d", r);

        }

        return 0;

    }
    —————————————————————————————— 

    内存泄漏问题:
    block 里面引用 self ,而self又强指针指着block。使self 不能被销毁。
    解决方法:
    __weak typeof(self) selfVc = self;
    定义一个self的替身并用ruo指针引用着
    ————————————————————————————————

    注意:在定义Block时,会在Block中建⽴立

    当前局部变量内容的副本(拷贝)后续再对该变量的数值进⾏行修改, 重点

    不会影响Block中的数值

    如果需要在block中保持局部变量的 
    ● 如果要修改Block之外的局部变量,需要使⽤用__block关键字  
    __block BOOL flag = NO; 

    ————————————————

  • 相关阅读:
    python中break与continue区别
    jmeter正则表达式
    python的input()函数与getpass标准库
    python实例练习-01登录
    python数据类型-字符串
    jmeter操作mysql
    jmeter文件下载
    字符逆序
    求解立方根
    求最小公倍数
  • 原文地址:https://www.cnblogs.com/qq449832375/p/4671856.html
Copyright © 2011-2022 走看看