我从最后开始观看了一段关于在Quartz中绘图的Apple视频。演讲者说,你应该将你的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?谢谢!
发布于 2012-06-28 16:33:44
https://stackoverflow.com/questions/11236297
复制相似问题