我正在观看最后关于在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?谢谢!
答案 0 :(得分:0)