Я смотрел видео 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? Благодаря!