iOS-Leaks

如果要检测内存泄露,我们会使用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 或者

iOS-Leaks_第1张图片
image.png
iOS-Leaks_第2张图片
image.png

点击Leaks

iOS-Leaks_第3张图片
image.png

点击左上角红圈run项目

可以看到有一个泄露


iOS-Leaks_第4张图片
image.png
iOS-Leaks_第5张图片
image.png

这样就定位到了泄露地点。

你可能感兴趣的:(iOS-Leaks)