【发布时间】:2016-01-06 12:48:02
【问题描述】:
我有一个混合的 Swift 和 Objective-C 项目。要在 Objective-C 中访问 Swift 公共 API,API 使用者当前必须导入“MyModule-Swift.h”。我已经有一个名为“MyModule.h”的 Objective-C 伞头文件。但是,导入“MyModule.h”不适用于 Swift API。我尝试在伞形标题中导入“MyModule-Swift.h”,但没有找到它(我假设它是由 Xcode 动态生成的)。
非常感谢任何建议,以便 API 使用者始终可以导入“MyModule.h”以使用用 Swift/Objective-C 编写的公共 API。
================================================ ======================
编辑:对于没有花时间正确地提出问题,我深表歉意。我有一个名为MyModule 的框架。
我有一个名为 ABUser 的 Objective-C 类,
@interface ABUser: NSObject
- (void)walk;
@end
我想用 Swift 给这个类添加新的行为,所以我定义了一个扩展
extension ABUser {
func swiftWalk()
}
现在,假设我想从 Objective-C 应用程序访问在 ABUser 上定义的 swiftWalk 方法,我将不得不使用 #import <MyModule/MyModule-Swift.h>。如果我想使用 walk 方法,#import <MyModule/MyModule.h> 会起作用。这是假设伞形标题MyModule.h 导入ABUser.h。
我一直希望将 Objective-C 应用程序添加到 #import <MyModule/MyModule.h>,并且永远不必担心 API 是用 Objective-C 还是框架中的 Swift 编写的。所以,我尝试在伞形标题MyModule.h 中导入MyModule-Swift.h。但是,如果这样做,我的 Objective-C 应用程序没有编译。不确定,这是否是因为 MyModule-Swift.h 是 Xcode 在构建过程中动态生成的。
编辑 2:添加了一个示例项目以在此处重现此问题:https://github.com/priteshshah1983/MyObjectiveCApp
相关代码在ViewController.m。构建将因master 分支而失败。要让它工作,请查看working 分支。
【问题讨论】:
标签: ios objective-c swift