当block中用到self时,需谨慎!

让人蛋疼的block!

block对于其变量都会形成strong reference,对于self也会形成strong reference ,而如果self本身对block也是 strong reference 的话,就会形成 strong reference 循环,造成内存泄露,为了防止这种情况发生,在block外部应该创建一个week(__block) reference。

所以在block内如果有self的话,一般都会在block外面加一句_block typeof(self)bself = self;

__block typeof(self) bself = self; 

[self methodThatTakesABlock:^ { 

[bself doSomething];
}

一定要防止在block中用到self时把self对象retain, 造成内存泄露。

时间: 2024-10-19 02:40:41

当block中用到self时,需谨慎!的相关文章

免费oa系统选择需谨慎

免费oa系统选择需谨慎 企业在进行oa系统选型的时候,很多都曾考虑过免费oa系统软件.只要在百度中搜索关键词,就可以找出很多免费oa系统软件下载的网页,功能齐全,安全免费等等字样充斥在眼前.那么免费oa系统真的如这些网页中说的那么好吗?免费oa系统是真的一无是处?还是有一定价值可言?想尝试免费oa系统软件的时候,又需要注意哪些呢? 想要让这些问题变得清晰,了解oa系统的开发成本,也许我们就能够得出一些答案了. 我们在选择oa办公系统时,其成本不仅仅是oa系统本身的购买成本,还包括对于企业员工的培

看球需谨慎:男友们警惕妹子们的9句话!

世界杯揭幕了,有些汉子痴迷于看球冷落了女朋友,丝毫没有意识到女朋友怒了.汉子们,如果你的女朋友说了以下9句话,你可是要警惕了!如果她说“没事”,你可能就摊上大事了!! The other day a friend told me his girlfriend was being very quiet. He asked her what was wrong and she said “nothing.” He said he wasn’t worried. I had to show him t

IOS开发中重写init方法使用需谨慎

IOS开发中重写init方法使用需谨慎 今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就会跳转到对应的视图控制器中,然后把搜索结果呈现在一个TableView上,但是我在调试时,每次输入完然后点击搜索按钮时,弹出结果列表总是空的,我需要返回到首页再点击一次搜索才会出现结果,而且我在首页更改搜索关键字之后,点击搜索,结果还是上次的搜索结果,必须返回点击一次才会出现这次的搜索结果. 经过大神指点,原来这个问

国内上网需谨慎,网监如何通过国内上网需谨慎,网监如何通过层层VPN加密代理找到你的! 层层VPN加密代理找到你的!

事先我们看一下新闻:[QQ聊天欲抢劫 还没行动就被抓,网友热议“隐私”成罪证]http://news.sina.com.cn/o/2011-11-02/082123401319.shtml国内上网需谨慎,网监如何通过层层VPN加密代理找到你的!整理一下,大致分为下列几种情况:1.不用代理 网民发帖流程:发帖人 → ISP → 服务器托管商 → 服务器 网警追踪流程:网监 → 服务器IP → 发帖人IP → 发帖人ISP → 档案爆菊几率:100% 2.只用1层私人VPN 网民发帖流程:发帖人 →

在基类构造器中调用虚方法需谨慎

最近,在基类的构造函数中调用虚方法时,发现了一个问题.先把问题重现如下: class Program { static void Main(string[] args) { var c = new Chinese(18); Console.ReadKey(); } } public class People { public int Age { get; protected set; } protected People() { this.Say(); } public virtual void

程序开发使用地图API时需注意的问题(转)

最近在做一个基于地点提醒的移动应用,当初考虑大家都心知肚明的原因,谨慎的选择了百度地图,现在想想其实完全没有必要,好的应用本来就不分国界的,最后可能还是得换回Google地图.毕竟Google地图在技术和成熟度上完胜百度地图,当然百度也在慢慢追赶,希望有一天大家都能用上咱们自己的好用的地图服务. 现在把碰到的问题和解决方案罗列一下: 版权:如果是大量商用的话,还是得事先注意一下版权意识,不然到时候就很被动了.两者的免费版都不允许商业应用,具体可以看这里Google Maps API,百度API常

初创企业:融资有风险额度需谨慎

编者注:每个初创企业都想一口吃成个独角兽,但在你成为独角兽之前,你应该好好考虑你现在这个还没成型的身躯是否能撑得下一个独角兽的食量,在融资的时候可别把自己肚皮撑破了或者消化不了把自己撑死在出师未捷身先死的征途上,下面我们看看著名企业家John Greathouse是怎么看待这个问题的- 融资有风险,额度需谨慎 有时候钱还真的不是越多越好,特别是对你的初创企业来说,有时如果太早的进行了过多的募资,结果可能反而会将你的企业推向深渊.因为你在这个时期募资过多,可能会驱使你把钱乱花在一些还没有证明着实可

借root之名,行流氓之实,劝告,root需谨慎

如今,使用安卓系统的手机已经非常普遍,各种各样的刷机.root软件也是遍地开花.以root为关键词搜一下,出现各种各样的root软件. 可以分为两种,一种是借助pc的,一种是直接在手机上使用的. 我没用过pc端的root软件,在手机上的倒是用过好几种.(root百宝箱,root精灵,root大师,kingroot...还有好几种忘了叫什么.(不要问我为什么不用大数字一键root,我的手机想多活几年)) 之前的手机root的时候也就是是选的以上的几种手机端的一键root,当初用的时候也就是觉得能r

使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?

系统的某些block api中,UIView的block版本写动画时不需要考虑,但也有一些api 需要考虑 以下这些使用方式不会引起循环引用的问题 [UIView animateWithDuration:duration animations:^ { [self.superview layoutIfNeeded]; }]; [[NSOperationQueue mainQueue] addOperationWithBlock:^ { self.someProperty = xyz; }]; [[