ios block外变量修改问题

__block NSMutableArray *test = [NSMutableArray array];
[homeTool getAddPictureSuccess:^(NSString *addURL) {
    [test addObject:addURL];
 
} failure:^(NSError *error) {
    
}];

代码如上,出了block,test这个数组还是为空,请问怎么写才能让addURL正确插入test中呢?

阅读 4.3k
2 个回答

那个 block 是个回调,要 getAddPictureSuccess 成功之后才会被调用,并不是直接调用的,相当于注册一下,如果成功了就执行 success block,如果失败了就执行 failure block。但是这个注册是立即返回的。

test 是在方法里初始化时获得了一次引用,然后又因为__block获得了一次引用,此时test引用数为2,但是这个getAdd...里的block不是立即执行的,所以是先走完方法,test引用为1,再走完block,test引用为0,被销毁,所以你要确保在block走完前去使用test。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题