gpt4 book ai didi

objective-c - 在枚举上使用 NSString 常量的原因?

转载 作者:太空狗 更新时间:2023-10-30 03:34:15 24 4
gpt4 key购买 nike

我想知道为什么 Apple 使用(在 CoreAnimation 中大量使用,但在其他地方也是如此)声明为 NSString * const 的常量,例如 kCAGravityTop 而不是常规的枚举?在这种情况下类型安全如何?据我了解,可以将任何 NSString 传递给需要此常量的方法,而不会收到任何编译器警告。

最佳答案

我不确定,但我猜这与用户将他们自己的扩展和子类添加到某些 Apple 产品有关。在这种情况下,您可以重写使用的方法并捕获字符串为“MyOwnValue”的情况,然后用它做任何您想做的事情。这比必须修改 Apple 的枚举要容易得多,而且还可以防止您搞砸任何事情。

它也可能是为了让 Apple 更容易拥有版本独立性。对于枚举,如果你以某种方式重新排列它们的顺序,它可能会对它们已缓存的任何值(无论出于何种原因)造成很多问题。如果枚举的值在保存到文件时为 1 << 3,然后 Apple 添加另一个枚举,使其值现在为 1 << 4,那么显然您的程序出现错误。为什么他们不小心移动枚举值,我不知道,但我认为他们使用 NSString 的可能性很大,因为它的值或顺序无法在任何版本中更改。

关于objective-c - 在枚举上使用 NSString 常量的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com