Objective c 设置为nil和0的变量之间的差异

Objective c 设置为nil和0的变量之间的差异,objective-c,null,Objective C,Null,在上述情况下,仅当myFloat为nil时,该方法才会运行。如果myFloat设置为0,它也会运行吗?好的,从技术上讲,nil是0。然而,其中一些取决于myFloat是什么类型的变量。如果myFloat是一个C float,那么不能指望它正好是0。您确实应该在id类型上使用nil。nil应该只与指针一起使用。它表示指针尚未设置为值 浮动和其他C类型只有一个值。(严格来说,float和double可能具有像NaN这样的值,但这更难管理) 在目标C中,您可以在类NSNumber中包装一个浮点。此类的

在上述情况下,仅当
myFloat
nil
时,该方法才会运行。如果
myFloat
设置为
0
,它也会运行吗?

好的,从技术上讲,nil是0。然而,其中一些取决于myFloat是什么类型的变量。如果myFloat是一个C float,那么不能指望它正好是0。您确实应该在id类型上使用nil。

nil应该只与指针一起使用。它表示指针尚未设置为值

浮动和其他C类型只有一个值。(严格来说,float和double可能具有像NaN这样的值,但这更难管理)


在目标C中,您可以在类NSNumber中包装一个浮点。此类的对象由指针引用,因此NSNumber*类型的变量可以为零。

在我开始回答之前,请参阅以获取有关类空符号族含义的更新信息:

象征 价值 意思
NULL
(void*)0
C指针的文本空值
nil
(id)0
Obj-C对象的文本空值
Nil
(类)0
Obj-C类的文本空值
NSNull
[NSNull null]
用于表示null的单例对象
myFloat是实际的
float
类型吗?如果是这样的话,您就不应该将其设置/比较为
nil
,后者仅对对象引用有效。这是一个苹果对桔子的比较,即使在这种特定情况下它可能会起作用,因为编译代码时nil和zero本质上是相同的。像float这样的类型有nil等价物吗?@G P Burdell:没有,没有,因为
float
不是指针类型。实际上,我想你可以用NaN来表示浮点值。但是对于像float这样的基本类型,我应该使用什么呢?这取决于你在做什么。如果有一个指向浮点的指针,则可以将其与0进行比较。但是,您应该了解浮点数字在计算机中的表示方式。@DavidGorsline highlighting words不是有效的编辑,请参阅
if (myFloat == nil){
    \\Do Method
}