我有一个方法,当给定一个未设置的浮点数而不是值为 0 的浮点数时,我需要做不同的事情。基本上,我需要检查一个变量是否已经存在,如果它的值为 0,则将其计数为设置.
那么,我应该使用什么占位符作为未设置值(nil、NULL、NO 等)以及如何测试变量是否未设置而不返回值为 0 的 true?
我有一个方法,当给定一个未设置的浮点数而不是值为 0 的浮点数时,我需要做不同的事情。基本上,我需要检查一个变量是否已经存在,如果它的值为 0,则将其计数为设置.
那么,我应该使用什么占位符作为未设置值(nil、NULL、NO 等)以及如何测试变量是否未设置而不返回值为 0 的 true?
当变量合法地获取该常量的值时,使用常量值来指示未设置状态通常会导致错误。
考虑使用NSNumber
来存储您的浮动。这样它不仅可以是nil
,它会默认为那个状态。
这假设您只需要少量的浮点数。如果您需要数百万个,NSNumber
可能会太慢且占用大量内存。
不要重载这些float
属性(我们称它们为 X 和 Y),而是isValid
为每个属性创建一个单独的标志。初始化标志以指示尚未设置浮动,并提供您自己的设置器来适当地管理标志。所以你的代码可能看起来像:
if (self.isXValid == YES) {
self.Y = ... // assigning to Y sets isYValid to YES
}
else if (self.isYValid == YES) {
self.X = ... // assigning to Y sets isXValid to YES
}
您实际上可以更进一步,让 X 的设置器也分配 Y,反之亦然。或者,如果 X 和 Y 密切相关,以至于您可以根据另一个的值来计算一个,那么您实际上只需要一个变量来处理这两个属性。