为什么 CGColor.copy() return 是可选值?

Why does CGColor.copy() return an optional value?

因此,由于函数 CGColor.copy() return 是一个可选值,因此人们会假设可能有理由将其设为 return nil。但是,除了 CGColor 本身是一个可选值之外,我想不出任何失败的原因。因为我在我的程序中使用了这个,所以有人知道为什么在一个不可选的值上 return nil 吗?

我认为你解释的很正确。请记住,实际上没有 CGColor 这样的对象;它实际上没有 copy 这样的方法。这是全局 C 函数的手动调整渲染:

CGColorRef CGColorCreateCopy(CGColorRef color);

嗯,CGColorRef 总是可以是 nil,所以 color 可以是 nil,所以结果可以是 nil。所以结果必须是可选的。 (它不能有时是可选的,有时又不是可选的。)