1。变量访问:
外部变量,在block内是只读
在外部声明变量时加上前缀__block,在block内成可读写
2。属性访问:
在方法内部的内联(匿名)block中出现的self表示该 方法所属的类本身,可通过.property对该类的属性进行读取,设置
对于独立的block(即单独声明定义的),self不能单独出现,只能通过参数传递,此时表示所属类本身,使用时不能用属性.propery,但可用方法setProperty / [self property]进行读取,设置
e.g.
typedef void (^BlockWithNoParams)(void);
- (void) scopeTest{
NSUInteger integerValue = 10;
BlockWithNoParams myBlock = ^{
NSLog(@"Integer value inside the block = %lu", (unsigned long)integerValue);
}
integerValue = 20;
myBlock(); //打印10 因为integerValue在block内是只读 变量,(若integerValue加了前缀__block,则变为了可读写变量,打印20)
NSLog(@"Integer value outside the block = %lu", (unsigned long)integerValue) ;
}