嘿,兄die!别让block影响你的开发

作者: __夏至未至 | 来源:发表于2017-06-18 23:17 被阅读202次

嘿,也许你看了题目会觉得我在贬低block? 那你就错了,大兄die!本人也是block的爱好者,能block的情况下绝对不用delegate!目前项目是多人合作开发的时候,对整体项目代码进行codereview以及测试的时候,总会因为一些不太合理的block用法,导致了一系列不可预估的情况发生。所以给大lao们一些介意,在我们iOS开发过程中,用到block回调的时候。一些细节可能需要注意!

记得加if判断

可能很多人会看到大部分的时候代码是这样的:

if (self.bolck)  {
    self.block(xxx)
}

其实很多人在想,为什么要写这层if判断呢?
有这么一个应用场景,当你发生block回调事件之后,但是你并没有去接收这个事件,然后你也没要加这层if判断,于是奔溃就出现了! 是的,奔溃了。所以为了开发的稳定性,加层if很重要!

在cell里记得用__weakself

其实好多人在用blcok的时候,都是默认使用__weakSelf。当然,也有人并不是这样的,因为现在的编译器非常强大,会提示你什么时候需要用__weakSelf。但是在tableViewCell里系统是并不会提示你的,所以这个时候呢,要是没有__weakSelf的情况下,就会发生循环引用,导致这块内存没办法释放。

如果block离有异步回调或者block,记得用__strongSelf

是的,有时候__strongself也是很重要的,因为如果是异步回调或者其他的时候,当前对象已经释放了,也就没办法发生回调事件了,总会有你意想不到的事情发生。

名侦探柯南环节

嗯,如果单纯的运用其实已经差不多了,不过身为一个程序员,总要有探索的精神。
blcok在iOS里可以理解为一个匿名函数,oc是一门运行时语言,当一个选择子SEL找不到调用者时,就会发生balabala一系列的事情之后,还是没有处理的话就会报错了。在iOS里如果block回调发生却没有响应者,那就会报EXC_BAD_ACCESS。如下图:

block_BAD_ACCESS.png

第二种情况呢,循环引用的原因就是因为强引用环造成的,关于此类介绍那就不介绍了,为什么会发生呢,因为我们的Vc对tableview强引用了,tableview对cell可能也进行了强引用?所以就造成了强引用环!

第三种情况呢,嗨呀,具体看下文吧!
http://blog.lessfun.com/blog/2014/11/22/when-should-use-weakself-and-strongself-in-objc-block/

其实看了很多东西,如果感兴趣可以看看block源码,了解它的本质,对使用block总有好处的!

tanks!

相关文章

  • 嘿,兄die!别让block影响你的开发

    嘿,也许你看了题目会觉得我在贬低block? 那你就错了,大兄die!本人也是block的爱好者,能block的情...

  • 嘿 兄die

    七月 是个让人烦躁的季节。 特别是长沙的七月 火辣辣的大太阳打在皮肤上 着实让人烦躁。 今年我大一 脸上还带有那...

  • java虚拟机工作原理

    醒醒吧,兄die

  • 你管我是谁

    兄die:你很不会做人哎。 反问:都是第一次做人,需要你教我吗? 兄die:你很不成熟哎。 反问:我又不是女神,不...

  • 减肥的兄die

    一直以来我都有个胖胖的弟弟,从小看他一点点的长大,也一点点的变肥。至于弟弟胖的原因,以下几点: 1.从小身体健康,...

  • iOS开发基础:开发两年的你也不会写的Block

    iOS开发基础:开发两年的你也不会写的Block iOS开发基础:开发两年的你也不会写的Block

  • depressed

    嘿 你可是天使 别让肮脏的鲜血沾染到你洁净的手腕 你可是天使 别让人性的败坏亵渎你高尚的灵魂 你可是天使 这里不是...

  • 别让坏情绪影响了你

    别让坏情绪影响了你,因为你的坏情绪根本影响不到别人,最后只会让自己难受 别让坏情绪影响了你,因为你的坏情绪只会伤你...

  • 嘿˜ 你在哪儿? 外面还下着雨呢。 小心点儿, 别让雨淋湿了你最爱的头发。 嘿˜ 你看到了吗? 阳光透过云层洒下了...

  • 嘿!狗兄

    嘿!狗兄,昨天是你 把我的烦恼偷藏起来了吗 怎么今夜,我找遍了家里所有房间 都没有察觉到它的痕迹 我记得,你曾趴在...

网友评论

    本文标题:嘿,兄die!别让block影响你的开发

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