__block NSMutableArray *test = [NSMutableArray array];
[homeTool getAddPictureSuccess:^(NSString *addURL) {
[test addObject:addURL];
} failure:^(NSError *error) {
}];
代码如上,出了block,test这个数组还是为空,请问怎么写才能让addURL正确插入test中呢?
__block NSMutableArray *test = [NSMutableArray array];
[homeTool getAddPictureSuccess:^(NSString *addURL) {
[test addObject:addURL];
} failure:^(NSError *error) {
}];
代码如上,出了block,test这个数组还是为空,请问怎么写才能让addURL正确插入test中呢?
test 是在方法里初始化时获得了一次引用,然后又因为__block获得了一次引用,此时test引用数为2,但是这个getAdd...里的block不是立即执行的,所以是先走完方法,test引用为1,再走完block,test引用为0,被销毁,所以你要确保在block走完前去使用test。
2 回答1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答1.1k 阅读
那个 block 是个回调,要 getAddPictureSuccess 成功之后才会被调用,并不是直接调用的,相当于注册一下,如果成功了就执行 success block,如果失败了就执行 failure block。但是这个注册是立即返回的。