inf这显然意味着无穷大,但是当你达到最大浮点值时会出现吗?
这实际上不是 ObjC 的一部分,除了 NSNumber 在持有无限值时将其用作 -description。
NSNumber 中的实际值是 double,它是由 C 定义的,实际上,定义很大程度上取决于平台。但是,在大多数平台上,它是IEEE-754 binary64。 IEEE 754 标准定义了一个affinely extended real number line,具有正无穷和负无穷以及有限值的值。它还精确定义了有限计算溢出到无穷大的不同方式,以及您的代码如何控制它。但是,作为一般规则,是的,如果计算超过 double 的最大有限值,您会得到正无穷大。
nan这到底是什么意思,这个值什么时候弹出来的?
这也主要是关于 C 和 IEEE-754,而不是 ObjC(同样,NSNumber 的 -description 除外)。维基百科在NaN 上有一个很好的页面,但是,简单地说,它的意思是“不是一个数字”,它用于没有合理价值的情况,甚至不是无穷大(或者在太多不同值之间模棱两可的情况),比如@ 987654335@.
nil我想我知道这个。尚未分配的对象的实例。无论如何,我认为它属于此列表。
nil 不是对象的实例。 nil 是一个空指针,当 没有 没有实例指向时使用。基本上相当于(id)0或(NSObject *)0。
但是“一个尚未分配的对象”不是一个对象,也不存在,所以……在某种程度上,首先谈论这样的事情是有意义的,我想你可以说nil 是指向它的指针。
null这个我不确定,但我认为它类似于nil?
+[NSNull null] 值用作实际存在的占位符对象,但代表什么都没有,在一个你实际上不能没有任何东西的地方(例如,在NSArray )。
如果您尝试将空指针打印为 C 字符串(例如,NSLog(@"%s", 0)),您也可能会看到 null。但是,您看到的任何代码实际上都不是合法的 C 或 ObjC 代码。
此外,人们经常将null 与NULL 混淆,这意味着任何空指针。
所以,当你有一个id、NSObject *、NSSomeOtherClass * 等,而你没有任何东西可以指向时,使用nil。如果您有一个指向非 ObjC 值的指针,例如 int *,但您没有任何东西可以指向,请使用 NULL。当您想将空指针放入集合时,请使用null。