ios

IOS面试题(block相关) --- block基础

2022-07-07  本文已影响0人  ShawnAlex

OC面试题目合集地址

问题1: block的分类


问题2: 什么是 block

block 是将函数及其执行上下文封装起来的对象


问题3: 什么是 block调用

block 调用即是函数调用


问题4: 什么场景需要 __block

通常被截获变量需要赋值操作时候需要添加 __block 修饰符


问题5: 看例子回答结果

    NSMutableArray *arr = [NSMutableArray array];
    
    void(^Block)(void) = ^{
        [arr addObject:@"123"];
    };
    
    Block();
    
    NSLog(@"%@", arr);

答案

["123"]

block正常截获变量 arr, 再进行插入"123" 操作, 结果 ["123"]


验证

问题6: 看例子回答结果

    NSMutableArray *arr = [NSMutableArray array];
    
    void(^Block)(void) = ^{
        
        arr = [NSMutableArray arrayWithArray:@[@"123"]];
    };
    
    Block();
    
    NSLog(@"%@", arr);

答案

报错, 缺少__block

与问题5的的区别

block进行赋值操作使用操作是不一样的, 赋值操作 局部变量定义时候需要__block 修饰

验证

问题7: 什么时候需要__block修饰? 什么时候不需要需要__block修饰?

赋值操作

上一篇下一篇

猜你喜欢

热点阅读