首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当ivar出现问题时,在哪里释放CGGradientRef?

当ivar出现问题时,在哪里释放CGGradientRef?
EN

Stack Overflow用户
提问于 2012-06-28 07:44:18
回答 1查看 516关注 0票数 0

我从最后开始观看了一段关于在Quartz中绘图的Apple视频。演讲者说,你应该将你的CGGradientRef存储在ivar中,这样系统就可以处理缓存了。所以我的第一个问题是,这是如何工作的?是不是因为渐变只为该对象创建了一次,然后再也不会创建,除非该对象再次创建?

另外,你在哪里释放渐变?在dealloc中,你会像其他依瓦尔一样释放它吗?

代码语言:javascript
复制
.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?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-06-28 16:33:44

通过简单的搜索,我找到了这个:

https://stackoverflow.com/a/8032905

在返回前添加以下内容:

代码语言:javascript
复制
[(id)result autorelease];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11236297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档