繁体   English   中英

在Objective-C项目中导入Pure Swift Framework

[英]importing Pure Swift Framework in Objective-C Project

我想将一个名为“ Beethoven”的Swift框架导入到Objective-C项目中。 我通过cocoapods导入了此框架。 问题在于,框架是纯快速编写的。 由于这些类不是NSObject的子类,因此无法在我的objC类中直接使用它们。

我是Swift的新手,而objC是中级的,但是我认为可能有2种解决方案:

1-修改整个库:这可能不是最佳解决方案。 2-使用一个新类,它充当swift框架和我的objC代码之间的接口。 我认为第二种解决方案在所需的时间和精力方面将是更好的选择。

实际上,下面给出的帖子解释了如何修改纯swift类,但是我不知道如何在我的情况下应用它。 如何在Objective-C中使用Swift非NSObject子类

正如我提到的那样,我不是一个非常有能力的程序员,对于这个问题可能有更好的解决方案。 如果有人可以帮助我并提出将纯Swift框架集成到我的objC项目中的最佳解决方案,我将不胜感激。

NSObject通常不是唯一的问题。 Swift具有许多Objective-C不支持的功能。 仅举几例:swift值类型(结构的),带有附加值的swift枚举。 如果库使用其中任何一个,则将无法为其自动生成Objective-C标头(.h)。

现场修改库的代码可能会起作用,但是长期来看,如果您需要再次更新该库,则可能需要做更多的工作。

您的第二种方法听起来更好:在库顶部创建一个与Objective-C兼容的层,该层将导出需要使用@objc导出的@objc并调整类型。 如果您采用这种方式,请考虑对原始库进行PR贡献,以便每个人都可以在Objective-C项目中使用它,并且您有责任在快速代码更改时更新它。

第三种方法实际上是将应用程序的某些部分重写为Swift。 根据使用库的应用程序部分的大小以及与应用程序其余部分的隔离程度,这可能会更容易,也可能不会更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM