当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

IOS的ARC会导致的内存泄露问题和解决方案 - Eidesen_Blog_ios

作者:小梦 来源: 网络 时间: 2024-06-03 阅读:
下面列举两种ARC导致内存泄露的情况。1,循环参照A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放。这种问题常发生于把delegate声明为strong属性了。例,@interface SampleViewController@property (nonatomic, strong) SampleClass *sampleClass;@end@interface SampleClass@property (nonatomic, strong) SampleViewController *delegate;@end 上例中,解决办法是把SampleClass 的delegate属性的strong改为assing即可。 2,死循环如果某个ViewController中有无限循环,也会导致即使ViewController对应的view关掉了,ViewController也不能被释放。这种问题常发生于animation处理。例,比如,CATransition *transition = [CATransition animation];transition.duration = 0.5;tansition.repeatCount = HUGE_VALL;[self.view.layer addAnimation:transition forKey:"myAnimation"]; 上例中,animation重复次数设成HUGE_VALL,一个很大的数值,基本上等于无限循环了。解决办法是,在ViewController关掉的时候,停止这个animation。-(void)viewWillDisappear:(BOOL)animated {    [self.view.layer removeAllAnimations];}

热点阅读

网友最爱