block

block

block内部访问外部的变量

如果外部的变量是基本数据类型,在block内部不可以直接修改外部变量的值,

int a = 10;

void (^myBlock)() = ^{

在内部可以访问的a的值

但是,block内部的a和外部的a并不是指向同一块存储空间

}

__block int a = 10;

void (^myBlock)() = ^{

在内部可以访问的a的值

但是,block内部的a和外部的a指向同一块存储空间

}

如果外部变量是oc对象类型

block内部可以直接修改外部oc对象的属性

Person *p = [[Person alloc] init];

void (^myBlock)() = ^{

p.age = 12;

}

你可能感兴趣的:(block)