我有两种布尔值的三种状态:
_shouldViewMoveUp = true
_shouldViewMoveDown = false
_shouldViewMoveUp = false
_shouldViewMoveDown = false
_shouldViewMoveUp = false
_shouldViewMoveDown = true
当关键字框架发生变化时,我们需要跟踪两个布尔变量是否为false / true。我想设计我的代码看起来更好。
我不知道如何用枚举或一个布尔值来做。你能解释一下我如何使我的代码整洁或只是正确的方式吗?
答案 0 :(得分:8)
在标题中定义enum
:
typedef NS_ENUM(NSUInteger, MoveDirection) {
MOVE_NOWHERE,
MOVE_UP,
MOVE_DOWN
};
然后只需使用它就可以使用任何其他原语;例如:
- (void)moveInDirection:(MoveDirection)direction
{
switch (direction) {
case MOVE_UP:
// move up
break;
case MOVE_DOWN:
// move down
break;
default:
break;
}
}
或:
@property (nonatomic, assign) MoveDirection moveDirection;
答案 1 :(得分:0)
您可以使用NSNumber
存储方向。
Fox示例:
@property (nonatomic) NSNumber *movedDown;
if (nil == self.movedDown) {
// not moved anywhere
} else if (self.movedDown.boolValue) {
// is moved down
} else {
// is moved up
}
移动后,您可以指定@YES
或@NO
未移动时:nil