使使用 swift 协议作为参数的 objective C 方法可访问 public

Make a objective C method that uses a swift protocol as parameter public accesable

我有一个 objective-c 方法,它使用 swift 协议作为参数类型。签名看起来像 + (void) my_ObjC_method: (id<my_Swift_protocol>) parameter_name;

我通常知道如何使 swift 协议可供 objective C 访问。 我是这样实现的:

@objC protocol my_Swift_protocol : class {
    //...methods go here
}

我的问题是我想让 my_ObjC_method public 易于访问。这通常只需将其添加到 @interface 部分的 header 文件中即可完成。遗憾的是,这需要将桥接 header 导入 .h 文件,以便 .h 文件知道我的 swift 协议并将其识别为有效类型。但是您不能将自动生成的桥接 header 导入到其他 header 文件中。

解决或解决此问题的好方法是什么?

也许您可以使用 @protocol 指令作为前向声明。

MyClass.h:

#import <Foundation/Foundation.h>

@protocol my_Swift_protocol;

@interface MyClass : NSObject
+ (void) my_ObjC_method: (id<my_Swift_protocol>) parameter_name;

@end