关于 block 中使用copy 需要注意的

来源:互联网 发布:数据产品经理的职责 编辑:程序博客网 时间:2024/06/09 16:06
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];


0 0
原创粉丝点击