为什么objective-c NS_ENUM变量自动具有默认值

时间:2016-11-17 15:51:14

标签: ios objective-c enums

我创建了一个像这样的枚举

typedef NS_ENUM(NSInteger, PermissionStages) {
    thePermissionNotDetermine = 0,
    thePermissionDenied = 1,
    theReminderPermissionAllowed = 2,
};

并创建一个像这样的变量

PermissionStages PermissionStageVar;

我没有为其分配任何值,但默认情况下,variable的第一个值为PermissionStages enum,在这种情况下为thePermissionNotDetermine

为什么会出现这种情况?

1 个答案:

答案 0 :(得分:4)

该行:

PermissionStages PermissionStageVar;

的默认值为0。这类似于以下行:

NSString *foo;

导致foo的初始值为nil。或

BOOL aBool;

导致aBool的初始值为NO

变量全部初始化为值“0”。

由于您的枚举恰好具有0的值,因此您的变量似乎已使用thePermissionNotDetermine进行初始化。