我有一个混合的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,那将非常感激。
我想使用 Swift 给这个类添加新的行为,因此我定义了一个扩展。
现在,假设我想从Objective-C应用程序中访问在
====================================================================
编辑: 我很抱歉没有花时间来正确地提出问题。我有一个名为MyModule
的框架。
我有一个 Objective-C 类叫做ABUser
,
@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
分支。