扫码关注官方订阅号
做了一个测试,先上代码: ViewController.h ViewController.m
我的问题:那个潜在的内存泄漏是怎么产生的?怎么做相关的优化?
学习是最好的投资!
@property(nonatomic, retain)标明该属性在使用其set方法时会自动retain一次。 self.leftView = [[UIView alloc] initWithFrame:...];这条语句,alloc使其引用计数+1,同时调用leftView的set方法,引用计数再+1,引用计数一共加了2次,而实际上我们想要的效果是引用计数只加1次,所以有内存泄露。 正确的写法应该是: UIView *myView = [[UIView alloc] initWithFrame:...]; self.leftView = myView; [myView release]; 这样Analyze时就不会提示内存泄露。
看你的声明,应该是没有自动计数ARC的。所以要自己管理内存。 你的leftView泄露了,alloc那行,增加autorelease就可以了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
@property(nonatomic, retain)标明该属性在使用其set方法时会自动retain一次。 self.leftView = [[UIView alloc] initWithFrame:...];这条语句,alloc使其引用计数+1,同时调用leftView的set方法,引用计数再+1,引用计数一共加了2次,而实际上我们想要的效果是引用计数只加1次,所以有内存泄露。 正确的写法应该是: UIView *myView = [[UIView alloc] initWithFrame:...]; self.leftView = myView; [myView release]; 这样Analyze时就不会提示内存泄露。
看你的声明,应该是没有自动计数ARC的。所以要自己管理内存。
你的leftView泄露了,alloc那行,增加autorelease就可以了。