typedef void (^SuccessBlock) (id obj) ;
SuccessBlock blk;
{
id array = [[NSMutableArray alloc]init];
blk = ^(id obj){
[array addObject:obj];
NSLog(@"array count = %ld",[array count]);
};
}
blk([[NSObject alloc]init]);
blk([[NSObject alloc]init]);
blk([[NSObject alloc]init]);
程序强制退出,此时block,截获了对象,但随着变量作用域的借宿而被废弃。
因此需要调用_Block_copy函数才能持有截获的附有__strong的自动变量值。
blk = [^(id obj){
[array addObject:obj];
NSLog(@"array count = %ld",[array count]);
} copy];