2012-06-27 19 views
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?謝謝!

回答