如何在Objective-c协议中使用swift struct作为属性?

时间:2016-03-24 09:46:21

标签: objective-c swift swift2

我有Objective-c协议。在这个协议中,我需要声明一个Swift结构类型的属性。如何实现这一目标?

SomeObjectiveCProtocol.h:

@protocol SomeObjectiveCProtocol <NSObject>
    @property (nonatomic, readonly) SomeSwiftStruct swiftStruct;
@end

这样的事情是否可行?

2 个答案:

答案 0 :(得分:0)

您可以使用协议_ObjectiveCBridgeable将Swift结构转换为Obj-C类。看到这个例子(我还没有测试过这个):

Easy Cast With _ObjectiveCBridgeable

答案 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