我对Objective-C程序中的枚举可见性有问题.我有两个头文件,其中一个定义了typedef enum.另一个文件需要使用typedef'd类型.

在C-#import头文件中,我建议不要直接使用#include个声明,而是在C-#import头文件中使用#include个声明.但是,我不知道如何前向声明枚举类型.

我不需要实际的枚举值,除了在相应的.m实现文件中,在那里我可以安全地离开#import.那么如何才能在标题中识别typedef enum呢?

推荐答案

在objective-c中转发enum(NS_enum/NS_选项)的最新方式(Swift 3;2017年5月)是使用以下内容:

// Forward declaration for XYZCharacterType in other header say XYZCharacter.h
typedef NS_ENUM(NSUInteger, XYZCharacterType);


// Enum declaration header: "XYZEnumType.h"
#ifndef XYZCharacterType_h
#define XYZCharacterType_h

typedef NS_ENUM(NSUInteger, XYZEnumType) {
    XYZCharacterTypeNotSet,
    XYZCharacterTypeAgent,
    XYZCharacterTypeKiller,
};

#endif /* XYZCharacterType_h */`

Objective-c相关问答推荐

iOS9 - 这个应用程序正在从后台线程修改自动布局引擎 - 在哪里?

如何在没有 Interface Builder 的情况下创建 Cocoa 接口?

Objective-C 对象的列表 Select 器

在 Objective-C 类中混合 C 函数

如何在目标 C 中创建单例类

.m 文件中的空@interface 声明是做什么用的?

UIViewController 的 prefersStatusBarHidden 不起作用

Objective-C 中的 alloc、init 和 new

iPhone 键盘、完成按钮和 resignFirstResponder

iOS 上 64 位的 BOOL

从 UITabBarController 在当前上下文中呈现模态视图控制器后出现黑屏

如何将 nil 添加到 nsmutablearray?

Cocoapods ld:找不到-lPods-Projectname 的库

Objective-C 中的属性和实例变量

iPhone 正确使用 Application Delegate

如何配置我的应用程序 - 菜单项被禁用?

如何在不管理 UDID 和重新编译的情况下无线分发 ios 应用程序

如何调整 UITableView 中原型单元格的左边距?

使用 Objective-C 发布多部分/表单数据

在 iOS 6.0 的 Xcode 4.5 中我没有要求的日志(log)消息