今天去面试,面试官问到了oC中的BLOCK问题,然后觉得OC就是一个无名函数,然后使用上没有啥区别啊?
问题就在这:OC的BLOCK中有一个self的东东,这个东西是一个强应用的东东,如果这个self出现在你的block中,那你估计多半死掉了;
所有面试官在问道block的问题时候,最关注这个问题,因为强引用在对象被释放掉,而block没有执行完的时候,self的内容就死在了内存里,只有程序被系统干掉的时候,这一个区域的内存才会被释放。
解决办法就是:
-(void) _week *me = self
block{
..=self
}
将一个弱引用的指针穿进去,因为如引用会在对象释放掉的时候自动释放。