美文网首页
IOS block 给自己买的坑

IOS block 给自己买的坑

作者: 镜头下的涂鸦 | 来源:发表于2017-04-08 11:58 被阅读12次

给自己埋得坑,含泪吞下

昨天改一个小的BUG,由于使用了block,不小心改一个新的BUG 来,debug好久才找到罪魁祸首。

我们都知道 再使用block的时候一定要小心循环引用,我们大部分同学也知道在使用了block的时候如果要修改block内部也使用了的外部变量的时候,这里一定要小心。变量前没加__block来修饰 的时候,某些变量是没法修改的(为什么说是某些,这个大家可以翻阅block的相关知识),block会记录传入时候的之,block内部就一直使用这个值,即使你在外部修改了也不管用。

而我呢明明知道却也犯了这样的错误。我的情况是怎么样的呢:

在使用tableView的时候由于两个界面是完全一样的而且在同一界面上。我为了复用cell 所以这个 cell是两个界面复用的。但是这个cell 就有个block。而且重点是我要在这个block中修改外部对象属性。问题来了,我是修改第二份界面的数据,但是一刷新我发先还是原来的之。最后发现修改第二个界面的对象,第二个界面内容没改变。相反的是第一个界面内容改变了。我顿时就 方了。最后一步步发现 block内部的对象的内存地址和外部的不一样,  哈哈 瞬间就明白了。block内部记录了我第一次传入的对象,所以就会出现这个bug 。然后就好解决了。

相关文章

网友评论

      本文标题:IOS block 给自己买的坑

      本文链接:https://www.haomeiwen.com/subject/tuvcjttx.html