例如,为什么要使用这个:
NSLocale *l = [[NSLocale alloc] initWithLocaleIdentifier@"en_US"];
而不是这样的:
NSLocale *l = [[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifierUS];
似乎它可以防止很多错误,因为在 Xcode 中键入 NSString 时,没有自动更正,而 Xcode 将自动更正/自动填充枚举。此外,我想不出在枚举或常量上使用 NSStrings 的理由。例如,随着新版本 SDK 的发布,Apple 可以添加新的标识符,但他们也可以使用枚举来执行此操作。枚举相对于字符串常量的另一个好处是可以更容易地比较枚举:
if(userIdentifier == NSLocaleIdentifierUS) {
//English!
}
此外,对于其他方法,Apple 使用枚举或特定对象作为参数:
NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
如果他们使用字符串作为 localeIdentifier,为什么不这样做:
NSData *data = [aString dataUsingEncoding:@"ascii"];
似乎他们只是不一致。