在 NSLocale 的标头中,currentLocale
声明如下:
+ (id /* NSLocale * */)currentLocale; // an object representing the user's current locale
很明显他们是id
故意回来的,但我很好奇为什么有必要这样做。这个方法可以返回除了 NSLocale 实例之外的任何东西吗?
在 NSLocale 的标头中,currentLocale
声明如下:
+ (id /* NSLocale * */)currentLocale; // an object representing the user's current locale
很明显他们是id
故意回来的,但我很好奇为什么有必要这样做。这个方法可以返回除了 NSLocale 实例之外的任何东西吗?
过去,有人使用NSDictionary
对象来获取语言环境信息。例如,请参阅记录的“特殊注意事项” -[NSString compare:options:range:locale:]
:
特别注意事项
在 OS X v10.5 之前,locale参数是
NSDictionary
. 在 OS X v10.5 及更高版本上,如果您传递NSDictionary
当前语言环境的实例,则会改为使用。
一些方法,比如-[NSDate dateWithNaturalLanguageString:locale:]
仍然取一个NSDictionary
.
其他方法,例如 many classes' -descriptionWithLocale:
,可以采用其中任何一种。
无论如何,随着NSLocale
各种语言环境参数类型的引入,它被推广以id
适应任何一种对象,而不会破坏源兼容性。的返回类型+[NSLocale currentLocale]
是类似的泛型,因此它可以传递给过去只接受NSDictionary
对象的方法。