NSPrefs"整数"改变了原因?

时间:2014-03-22 17:21:19

标签: objective-c ios7

我多年来一直使用类似以下的代码:

sMinimumPrice = [[NSUserDefaults standardUserDefaults] integerForKey:kPrefsMinimumPriceRange]

然而,现在,在7.1.x中,它似乎不再返回一个整数,而是一个长整数。这是对的吗?

如果我更新了我的代码,它是否仍然可以在较旧版本的操作系统上运行?

1 个答案:

答案 0 :(得分:3)

它返回一个NSInteger。你不应该对它的大小做出任何假设!它在64位上是一个大小,在其他架构上是另一个大小。在Xcode 5.1中,默认情况下,您将构建64位以及其他架构。

因此,如果sMinimumPrice被输入为int,那么总是是一个错误,现在它就要咬你了。将它声明为NSInteger,你会没事的。

请注意,将此视为long无济于事,因为long的大小在64位上与其他体系结构不同。另一方面,如果您的问题是如何为NSInteger找到正确的NSLog格式说明符,那么这个事实很有用:将NSInteger强制转换为long并使用%ld