Block系列文章—————————————
Block笔记(1)—— 基本认识
Block笔记(2)—— 底层结构
Block笔记(3)—— 基础类型的变量捕获
Block笔记(4)—— Block的类型
Block笔记(5)—— 对象类型的auto变量捕获
Block笔记(6)— __block的深入分析
————————————————————
首先我们来看这么一段代码案例
*********************CLPerson.h*********************
#import <Foundation/Foundation.h>
@interface CLPerson : NSObject
@property (nonatomic,assign) int age;
@end
*********************CLPerson.m*********************
#import "CLPerson.h"
@implementation CLPerson
-(void)dealloc {
NSLog(@"%s",__func__);
}
@end
*********************main.m*********************
#import <Foundation/Foundation.h>
#import "CLPerson.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
{
//临时作用域开始
CLPerson *person = [[CLPerson alloc] init];
person.age = 10;
}//临时作用域结束
NSLog(@"-----------flag1");
}
return 0;
}
通过在打印标记flag1
处断点调试可看出,在临时作用域里面的person
对象只要出了作用域就会被释放,这一点是很好理解的。
上面的代码加入block
,调整如下
*********************CLPerson.h*********************
#import <Foundation/Foundation.h>
@interface CLPerson : NSObject