【发布时间】:2018-03-22 04:20:09
【问题描述】:
我有一个 Swift 类必须使用的 Objective-C 标头。但是,此标头必须使用 Swift.h 文件作为 Swift 文件中声明的枚举。也就是说,设置如下:
MPViewController.h
#import "MyProject-Swift.h"
@interface MPViewController: UIViewController
@property (nonatomic, assign) MPSomeEnum theEnum;
...
@end
MyProject-Bridging-Header.h
...
#import "MPViewController.h"
...
SomeEnum.swift
@objc enum MPSomeEnum: Int {
...
}
编译代码时出现三个错误:
- 找不到“MyProject-Swift.h”文件
- 未能发出预编译头
[Xcode DerivedData folder]/[...]/MyProject-Bridging-Header-swift_[...].pch用于桥接头[Project folder]/MyProject-Bridging-Header.h- 未知类型名称“MPSomeEnum”
假设这源于MyProject-Swift.h 和桥接头MyProject-Bridging-Header.h 之间的循环引用,我是否正确?通过查看similar question,一种解决方案是使用前向声明。但是,似乎不可能转发声明一个枚举,所以这样做的唯一方法可能是将枚举定义完全移动到一个 Objective-C 文件中?
【问题讨论】:
标签: objective-c swift enums language-interoperability