我正在观看上次有关使用 Quartz 绘图的 Apple 视频。演讲者说您应该将 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?谢谢!