ACGImageRef
似乎没有任何变异操作。复制aCGImageRef
不复制CGDataProviderRef
(通过实验确定)。所以 ifCGImageRef
是一个不可变类型,有什么理由copy
vs.retain
吗?
问问题
826 次
2 回答
2
CGImageRef 似乎没有任何变异操作
没有要修改的公共函数CGImage
,但这并不意味着CGImageRef
它是不可变的。CGImageRef
是不透明的,即内部结构没有记录,但仍有修改方法。
CGImageRef imageRef = ...
struct CGImage image = *imageRef;
//if you know the internal structure, you can do things like
image.provider = ...
我猜 Core Graphics 经常制作图像的内部副本,例如,CGImageCreateCopyWithColorSpace
可能在CGImageCreateCopy
内部使用。绘制图像时也可以进行复制。
当然,这是一个非常好的“子类化”设计(不是真正的子类化,因为我们有结构,而不是对象)。
于 2013-05-23T12:29:31.540 回答
0
不。有时你需要copy
,例如你可以得到CGImageRef
支持 aUIImage
但尝试它是不好的做法retain
- 在这种情况下你会做 a copy
。
于 2013-05-23T11:22:39.020 回答