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;
}
网友评论