我多年来一直使用类似以下的代码:
sMinimumPrice = [[NSUserDefaults standardUserDefaults] integerForKey:kPrefsMinimumPriceRange]
然而,现在,在7.1.x中,它似乎不再返回一个整数,而是一个长整数。这是对的吗?
如果我更新了我的代码,它是否仍然可以在较旧版本的操作系统上运行?
答案 0 :(得分:3)
它返回一个NSInteger。你不应该对它的大小做出任何假设!它在64位上是一个大小,在其他架构上是另一个大小。在Xcode 5.1中,默认情况下,您将构建64位以及其他架构。
因此,如果sMinimumPrice
被输入为int
,那么总是是一个错误,现在它就要咬你了。将它声明为NSInteger,你会没事的。
请注意,将此视为long
无济于事,因为long
的大小在64位上与其他体系结构不同。另一方面,如果您的问题是如何为NSInteger找到正确的NSLog格式说明符,那么这个事实很有用:将NSInteger强制转换为long
并使用%ld
。