1.2 Quartz 2D 記憶體管理,quartz2d
通過 Product -> Analyze 來進行靜態分析
- 可以使用Quartz 2D的函數來指定retain和release一個對象。例如,如果建立了一個CGColorSpace對象,則使用函數CGColorSpaceRetain和CGColorSpaceRelease來retain和release對象。
- 也可以使用Core Foundation的CFRetain和CFRelease。注意不能傳遞NULL值給這些函數
|
使用Path 對象時的記憶體管理問題:
| 1、凡是遇到 retain 、 copy 、 create 函數建立出的對象, 使用完後都需要進行 release,否則將導致記憶體泄露2、但是CGPathCreateMutable( )不是 OC 方法, 所以不是調用某個對象的 release方法3、CGXxxxxCreate 對應的就有 CGXxxxxRelease。4、通過 CFRelease(任何類型);可以釋放任何類型。 |
範例程式碼:
1 - (void)drawRect:(CGRect)rect 2 { 3 // 1.擷取上下文(layer) 4 CGContextRef ctx = UIGraphicsGetCurrentContext(); 5 6 // 2.拼接路徑 7 CGMutablePathRef path = CGPathCreateMutable(); 8 CGPathMoveToPoint(path, NULL, 50, 50); 9 CGPathAddLineToPoint(path, NULL, 100, 100);10 11 // 3.把路徑添加到上下文當中12 CGContextAddPath(ctx, path);13 14 // 4.渲染15 CGContextStrokePath(ctx);16 17 // 釋放18 CGPathRelease(path); //方法119 CFRelease(path); //方法220 }
如有疑問,請發送郵件至 shorfng@126.com 聯絡我。 By:藍田(Loto)