如果要检测内存泄露,我们会使用Xcode自带的Instruments中的Leaks工具来检测.
注释掉 CGPathRelease(path);这句话会导致内存泄露,因为项目中使用c的类创建了对象,没有手动释放该对象。现在利用Leaks来查找项目的内存泄露
#import "TriangleView.h"
@implementation TriangleView
- (void)drawRect:(CGRect)rect {
CGContextRef ref = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 20, 20);
CGPathAddLineToPoint(path, nil, 100, 100);
CGPathAddLineToPoint(path, nil, 20, 100);
CGContextAddPath(ref, path);
CGContextSetRGBFillColor(ref, 0, 1, 0, 1);
CGContextDrawPath(ref, kCGPathFillStroke);//最后一个参数是填充类型
// CGPathRelease(path);
}
@end
打开Instruments,快捷键command+i 或者
image.png image.png点击Leaks
image.png点击左上角红圈run项目
可以看到有一个泄露
image.png image.png
这样就定位到了泄露地点。
网友评论