【发布时间】:2016-05-31 13:40:58
【问题描述】:
这行在我的代码中是可以的:
typedef NS_ENUM(NSInteger, unused_name)
{ k_a = 123,
k_b = 123,
k_c = 61
};
但以下几行不是。编译器抱怨 NS_ENUM 的变量 (...) 部分不包含任何变量。
NS_ENUM(NSInteger)
{ k_a = 123,
k_b = 123,
k_c = 61
};
我对 CF_ENUM 也有同样的问题。
我认为这不是头文件的问题(Foundation/NSObjCRuntime.h 或 Core Foundation)。
【问题讨论】:
-
我写了一个答案,但看起来你到目前为止所做的一切都是正确的。只需确保您的枚举声明位于任何 Objective-C 接口或实现代码块之外。
-
你不能有一个没有名字的 NS_ENUM。该名称成为用于 NS_ENUM 的 typedef 的名称。使用像“unused_name”这样的非唯一名称会给您带来麻烦。根本不给名字是行不通的。这不是标题的问题 - 这是您的代码的问题。你做错了什么,编译器会告诉你。
-
@gnasher729 除非我遗漏了一些东西,否则您实际上可以拥有一个没有名称的 NS_ENUM(例如问题中的第二个代码块)。它只是在 Xcode 的代码完成中显示为
enum <anonymous>。 -
一目了然,代码看起来是合法的。您使用的是什么编译器和版本?这些语句在您的代码中的什么位置(源代码、标题、内部接口/实现等)?
-
@CRD 我正在使用 Xcode 7.3.1。代码行在接口之后和实现块之前。
标签: objective-c cocoa enums