为什么可以使用字符串值声明NSInteger?

时间:2016-01-11 07:18:41

标签: objective-c

为什么你可以做这样的事情?

NSInteger something = @"something";

这不会引发错误,而是返回一些实际上是NSInteger的数字,这感觉很奇怪。

3 个答案:

答案 0 :(得分:0)

对我而言,它说 指向整数转换的不兼容指针初始化' NSInteger' (又名' int')表达式为' NSString *'

我觉得,你得到的是该NSString的内存地址。

答案 1 :(得分:0)

在与目标C类似的语言中,当您定义类或常量字符串时(您定义的内容如@"something"是一个常量字符串),它将被存储在某处并使用指向它的指针。指针是32位和64位。 32位指针是32位整数,因此可以很容易地将它们转换为整数。所以没有办法抛出错误,因为这是一个合法的任务。

答案 2 :(得分:0)

这是同一行代码

  NSInteger something = [@"something" integerValue];