我有Objective-c协议。在这个协议中,我需要声明一个Swift结构类型的属性。如何实现这一目标?
SomeObjectiveCProtocol.h:
@protocol SomeObjectiveCProtocol <NSObject>
@property (nonatomic, readonly) SomeSwiftStruct swiftStruct;
@end
这样的事情是否可行?
答案 0 :(得分:0)
您可以使用协议_ObjectiveCBridgeable
将Swift结构转换为Obj-C类。看到这个例子(我还没有测试过这个):
答案 1 :(得分:-1)
我用协议的前向声明来解决这个问题。我定义了
SomeSwiftProtocol.swift:
protocol SomeSwiftProtocol {
// some protocol requirements
}
SomeSwiftStruct.swift:
struct SomeSwiftStruct: SomeSwiftProtocol {
// SomeSwiftProtocol implementation
}
而不是SomeObjectiveCProtocol.h:
@protocol SomeSwiftProtocol;
@protocol SomeObjectiveCProtocol <NSObject>
@property (nonatomic, readonly) id<SomeSwiftProtocol> swiftStructProtocol;
@end