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

S.J*_*S.J 2 enums objective-c ios

我创建了一个这样的枚举

typedef NS_ENUM(NSInteger, PermissionStages) {
    thePermissionNotDetermine = 0,
    thePermissionDenied = 1,
    theReminderPermissionAllowed = 2,
};
Run Code Online (Sandbox Code Playgroud)

并创建一个这样的变量

PermissionStages PermissionStageVar;
Run Code Online (Sandbox Code Playgroud)

我没有给它分配任何值,但默认情况下它variablePermissionStages enum第一个值,在这种情况下它的thePermissionNotDetermine

为什么会出现这种行为?

rma*_*ddy 5

线路:

PermissionStages PermissionStageVar;
Run Code Online (Sandbox Code Playgroud)

正在获得一个默认值0。这类似于以下行:

NSString *foo;
Run Code Online (Sandbox Code Playgroud)

导致foo初始值为nil。或者

BOOL aBool;
Run Code Online (Sandbox Code Playgroud)

导致aBool初始值为NO

变量都被初始化为值“0”。

由于您的枚举恰好有一个 with 值0,您的变量似乎是用thePermissionNotDetermine.