gpt4 book ai didi

objective-c - 为什么[NSLocale currentLocale]返回id?

转载 作者:行者123 更新时间:2023-12-03 16:51:15 25 4
gpt4 key购买 nike

在 NSLocale 的 header 中,currentLocale 声明如下:

+ (id /* NSLocale * */)currentLocale;   // an object representing the user's current locale

很明显,他们是故意返回 id 的,但我很好奇为什么这是必要的。该方法是否可以返回 NSLocale 实例以外的任何内容?

最佳答案

过去,人们使用 NSDictionary 对象来获取区域设置信息。例如,请参阅 -[NSString compare:options:range:locale:] 记录的“特殊注意事项” :

Special Considerations

Prior to OS X v10.5, the locale argument was an instance of NSDictionary. On OS X v10.5 and later, if you pass an instance of NSDictionary the current locale is used instead.

某些方法,例如 -[NSDate dateWithNaturalLanguageString:locale:] 仍然采用 NSDictionary

其他方法,例如许多类的 -descriptionWithLocale:,可以采用任一方法。

无论如何,随着 NSLocale 的引入,各种语言环境参数的类型被泛化为 id 以适应任何一种对象,而不会破坏源兼容性。 +[NSLocale currentLocale] 的返回类型是类似的泛型,因此可以将其传递给过去仅接受 NSDictionary 对象的方法。

关于objective-c - 为什么[NSLocale currentLocale]返回id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301215/

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