0
我正在觀看上次關於Quartz繪圖的Apple視頻。發言者說你應該將你的CGGradientRef存儲在ivar中,這樣系統可以處理緩存。所以我的第一個問題是,這是如何工作的?這是否僅僅是因爲漸變爲該對象創建了一次,並且除非再次創建該對象,否則永遠不會再次創建?何時發佈CGGradientRef當一個ivar
另外,你在哪裏釋放漸變?你像dealloc中的其他ivars一樣發佈它嗎?
.h
@property (nonatomic, readonly) CGGradientRef gradient;
.m
- (CGGradientRef)gradient {
if (NULL == _gradient) {
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
_gradient = CGGradientCreateWithColors(rgb, (CFArrayRef)[NSArray arrayWithObjects:(id)[[UIColor colorWithRed:28./255 green:160./255 blue:255./255 alpha:1] CGColor], (id)[[UIColor colorWithRed:11./255 green:67./255 blue:107./255 alpha:1] CGColor], nil], nil);
CGColorSpaceRelease(rgb);
}
return _gradient;
}
我在哪裏發佈CGGradientRef?謝謝!