【发布时间】:2021-05-22 06:18:45
【问题描述】:
我在一个混合了 Objective-C 和 Swift 的旧项目中工作,Objective-C 中有很多遗留代码,因此将所有内容迁移到 Swift 是不现实的。新代码是用 Swift 编写的,但 Objective-C 需要进行少量更新。
我最近一直在使用 RxSwift,我也想开始在这个旧项目中使用。
问题在于 Objective-C Swift 互操作性。
例如我不能写这个:
@objc let int = BehaviorSubject<Int>(value: 42)
因为我得到属性不能被标记为@objc,因为它的类型不能在Objective-C中表示
我该如何处理这种情况?有人在混合 objc/swift 项目中使用 RxSwift 吗?
【问题讨论】:
-
“我不能写这个” 为什么你需要写那个?为什么 ObjC 代码需要看到
BehaviourSubject? -
我需要订阅 Swifth 和 ObjC 代码中对该属性的更改...
-
你刚刚说“新代码是用 Swift 编写的”,所以如果你需要订阅对 in ObjC 的更改,你似乎违反了自己的规则......无论如何,注意还有ReactiveObjC。
-
请记住,Swift 中有一些构造在 Obj-C 中不可用。虽然,今天这比 7 年前(元组等)要好得多,但它仍然是正确的。并不是说这对您当前的问题有帮助,而是开始迁移到 Combine 以防止出现类似问题。
-
@BonanzaDriver 是的,我去
Combine看看,谢谢!
标签: swift objective-c rx-swift