这是我们在从Xcode 8转到9(Swift 3.1-> Swift 3.2 / 4)时看到的情况。它是一个常见的例子,它有一个只读属性的公共头文件和带有读/写定义的私有头文件以及需要访问的Swift代码(在这种情况下是单元测试,但可能只是一个混合的ObjC / Swift项目)二传手。我以为我会分享我们如何解决这个问题。
主类:
Objective-C标头
@interface SomeClass : NSObject {
@property (nonnull, nonatomic, readonly) SomeOtherClass* var;
}
@end
然后我们有一个私人标题:
Objective-C标头
@interface SomeClass (Testing) {
@property (nonnull, nonatomic, readwrite) SomeOtherClass* var;
}
@end
然后在Bridging标头中我们包括原始标头和私有标头。使用Xcode 8(Swift 3.1),这很好用。在Xcode 9(Swift 3.2 / 4)中,我们收到了属性为只读的错误。
答案 0 :(得分:2)
对我们有用的是什么:
将私有测试标题更改为:
@protocol SomeClassTesting <NSObject>
@property (nonnull, nonatomic, readwrite) SomeOtherClass* var;
@end
@interface SomeClass (Testing) <SomeClassTesting>
@end