使使用 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
我有一个 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