iOS开发面试题

iOS之——Block

2018-04-18  本文已影响0人  天空像天空一样蓝

神一样的存在

网上资源

iOS开发中copy、retain的定义和区别

  1. Block 为什么使用copy
  1. Block 为什么不适用retain
    retain使用引用计数增加1,Block的内存在栈上,不是堆上,可能随时被系统回收,导致野指针存在,程序崩溃。
  2. 为什么Block中的对象引用计数需要自动加1
    Block执行的是回调,因此Block并不知道其中的对象obj创建后会在什么时候释放,为了不再Block使用object之前,对象已经释放,Block就retain了object一次,持有这个对象。
  3. Block和函数的关系
  4. Block的理解
    Block实际上是:指向结构体的指针
  5. 对于基本数据
    //如果需要在block中对num进行修改,需要加上关键字__block
    //(我们也可以用static关键字进行修饰)
    int num1 = 10;
    void(^block1)() = ^{
        NSLog(@"num1 is %d",num1);
    };
    num1 = 20;
    block1();//输出10
    
    //改进:使用block,使进入到block块中的变量不被当做常量来使用
    __blockint num2 = 10;
    void(^block2)() = ^{
        NSLog(@"num2 is %d",num2);
    };
    num2 = 20;
    block2();//输出20
上一篇 下一篇

猜你喜欢

热点阅读