【问题标题】:Xcode Enum woesXcode 枚举问题
【发布时间】:2010-06-11 22:08:01
【问题描述】:

我以为我已经整理好了,但我仍然缺少一些东西。

非常简单,我有一个包含 DAO 的设置类(位于 plist 上)。为了方便和可读性,我想为设置设置几个枚举,例如 GamePlayType 和 DifficultyLevel。现在我在 @interface 行上方的 Settings.h 文件中定义它们:

typedef enum {
 EASY,
 NORMAL,
 HARD
} DifficultyLevel;

和

typedef enum {
 SET_NUMBER_OF_MOVES,
 TO_COMPLETION
} GamePlayType;

如果我从 Settings 类中访问它们,例如:

- (int)gridSizeForLOD {
 switch ([self difficultyLevel]) {
  case EASY:
   return GRID_SIZE_EASY;
  case NORMAL:
   return GRID_SIZE_NORMAL;
  case HARD:
   return GRID_SIZE_HARD;
  default:
   return GRID_SIZE_NORMAL;
 }
}

一切都很好。

但是,如果我尝试在 Settings 类之外访问它们,假设在我的主视图控制器类中,如下所示:

if (([settings gameType] == SET_NUMBER_OF_MOVES) && (numMoves == [settings numMovesForLOD])) {
    [self showLoseScreen];
}

我收到错误(如 EXC_BAD_ACCESS)或条件总是失败。我做错了什么吗?

另外,我应该指出,我有此代码用于调用 gameType(位于 Settings 类中):

- (GamePlayType)gameType {
    return [dao gameType];
}

DAO 像这样实现 gameType:

- (int)gameType {
    return (settingsContent != nil) ? [[settingsContent objectForKey:@"Game Type"] intValue] : 0;
}

我知道我的 DAO 返回一个 int 而不是 GamePlayType,但是 A)我描述的问题出现在我尝试使用“正确”数据类型时,并且 B)我认为这无关紧要,因为枚举只是一堆命名的整数,对吧?

任何帮助,不胜感激。我真的很想彻底了解这一点,但有些事情让我感到困惑......

干杯,

克里斯

【问题讨论】:

  • EXC_BAD_ACCESS 异常后从调试器获得的回溯应该可以为您提供大量有关该问题的信息。您在此处显示的代码没有任何明显的问题。
  • EXC_BAD_ACCESS 在各个方面都像是一个与枚举无关的问题。我会去别处看看。设置断点,正如 Carl Norum 所说,查看回溯。

标签: objective-c xcode enums


【解决方案1】:

如果你还没有它,你需要在你的其他类中像下面这样导入

#import "Settings.h"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多