0
儀器讓我發現,我在下面的代碼泄漏:Objective-C - 泄漏在哪裏?
CGContextMoveToPoint(c, startPoint.x, self.frame.size.height - offsetYBottom);
CGContextAddLineToPoint(c, startPoint.x, startPoint.y);
CGContextAddLineToPoint(c, endPoint.x, endPoint.y);
CGContextAddLineToPoint(c, endPoint.x, self.frame.size.height - offsetYBottom);
CGContextClosePath(c);
CGGradientRef myGradient;
CGColorSpaceRef myColorspace;
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = { 0.0/255.0, 197.0/255.0, 254.0/255.0, 1.0f, 0.0/255.0, 197.0/255.0, 254.0/255.0, 0.25f };
myColorspace = CGColorSpaceCreateDeviceRGB();
myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations);
CGPoint myStartPoint, myEndPoint;
myStartPoint.x = self.frame.size.width/2;
myStartPoint.y = 0.0;
myEndPoint.x = self.frame.size.width/2;
myEndPoint.y = self.frame.size.height;
CGContextSaveGState(c);
CGContextClip(c);
CGContextDrawLinearGradient (c, myGradient, myStartPoint, myEndPoint, 0);
CGContextRestoreGState(c);
如果我評論這一部分,泄漏都不見了。 startPoint和endPoint是CGPoint。
負責的調用者:CGTypeCreateInstanceWithAllocator。
可能是什麼問題?
但是,這是爲什麼?有沒有用alloc的規則呢? – CristiC
如果您「創建」了顏色空間或漸變,它會在封面下創建一個c對象,這是您釋放的責任。 –
您在這裏處理的是CoreFoundation樣式的對象,它們的內存管理規則與Cocoa有些不同,這不是Objective-C。 – omz