【发布时间】:2015-04-24 13:52:35
【问题描述】:
像这样循环遍历 Objective-C BOOL 是否安全:
for (BOOL flagA = NO; flagA <= YES; flagA++)
for (BOOL flagB = NO; flagB <= flagA; flagB++)
// ...
我想用它来循环遍历XCTestCase 中所有相关的标志排列。
但至少在某些平台上,YES++ 似乎仍然是 YES(因此会导致无限循环,例如在 iPhone 6 Plus 模拟器上),而我原本预计 BOOL 会被视为 @ 987654326@(因此YES++ 变为2)。
我是否必须改为循环使用ints(我的最佳猜测),还是可以以某种方便的方式挽救BOOL 的使用?
【问题讨论】:
-
为什么不直接使用整数,然后使用整数作为布尔值?
-
@Sulthan 请参阅 Q 中的最后一行。那么这是要走的路吗?你知道为什么
BOOL(显然)在不同平台上的工作方式不同(就++而言)? -
我目前在您的代码中看不到错误,因为
YES应该是 1,NO应该是 0,BOOL应该是有符号字符,但您永远不应该将布尔值与 @987654336 进行比较@ 或递增的布尔值。这些操作是未定义的。 -
有问题的代码实际上可以在我的机器上运行。
-
@NicolasMiari
YES++只是作为flag = YES; flag++的快捷方式。
标签: ios objective-c for-loop boolean