2012-06-27 6 views
0

Я смотрел видео Apple из прошлого относительно чертежа в кварце. Оратор сказал, что вы должны хранить свой CGGradientRef в иваре, чтобы система могла позаботиться о кешировании. Поэтому мой первый вопрос: как это работает? Это просто потому, что градиент создается один раз для этого объекта, а затем никогда не создается снова, если объект не создается снова?Куда выпустить CGGradientRef, когда ivar

Кроме того, где вы отпускаете градиент? Вы отпускаете его, как другие ивары в dealloc?

.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? Благодаря!

ответ

Смежные вопросы