0%

block捕获变量的几道测试题

第一题

1
NSInteger age = 20;
2
    void(^block)() = ^(){
3
        NSLog(@"%li",age);//打印的值为几
4
    };
5
    age = 40;
6
    block();

第二题

1
SCPerson *person = [[SCPerson alloc]init];
2
    person.age = 20;
3
    void(^block)() = ^(){
4
        NSLog(@"%li",person.age);//打印的值为几
5
    };
6
    person.age = 40;
7
    block();

第三题

1
SCPerson *person = [[SCPerson alloc]init];
2
    person.age = 20;
3
    void(^block)() = ^(){
4
        NSLog(@"%li",person.age);//打印的值为几
5
    };
6
    person = [[SCPerson alloc]init];
7
    person.age = 40;
8
    block();

第四题

1
    SCPerson *person = [[SCPerson alloc]init];
2
    person.age = 20;
3
    __weak SCPerson *weakPerson = person;
4
    void(^block)() = ^(){
5
        NSLog(@"%li",weakPerson.age);//打印的值为几
6
    };
7
    person = [[SCPerson alloc]init];
8
    person.age = 40;
9
    block();

第五题

1
SCPerson *person = [[SCPerson alloc]init];
2
    person.age = 20;
3
    __weak SCPerson *weakPerson = person;
4
    void(^block)() = ^(){
5
        __strong SCPerson *strongPerson = weakPerson;
6
        NSLog(@"%li",strongPerson.age);//打印的值为几
7
    };
8
    person = [[SCPerson alloc]init];
9
    person.age = 40;
10
    block();