代码之家  ›  专栏  ›  技术社区  ›  Mark Bridges

Cocoapod,混搭Swift和Objective-c代码

  •  1
  • Mark Bridges  · 技术社区  · 8 年前

    我的任务是将现有应用程序的模型层拆分为一个单独的框架。我正在尝试使用cocoapods制作一个pod,然后将其导入主应用程序。

    我遇到的问题是,我要从中拆分代码的应用程序是Swift和Objective-c的混合。它没有完全拆分,因此Swift代码使用Objective-c代码,Objective-c代码使用Swift代码。

    我正在努力理解如何实现这一点,或者这是否可能?当您在一个框架中时,桥接头和生成的*-swift。h的工作方式似乎不同。然后pods是上的另一个复杂问题。

    我在这里尝试了一个简单的项目。扰流板警报。它无法编译。 https://github.com/Megatron1000/TestMixAndMatch

    我试着找到一个cocoapod的例子,它以同样的纠结语言方式设置,但还不能。有人能给我举个例子吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Hons    8 年前

    我有一个包含Obj-C和Swift代码的(私人)pod。在podspec中,我只是这样添加了它们

      s.source_files        = 'Project/*.{swift}',
                              'Project/legacy/*.{h,m}'
    

    从技术上讲,在Xcode中,这个项目是一个框架。

    Here 您可以找到如何在项目中组合它们的技术细节。 从技术上讲,如果您创建一个框架,那么您需要在框架的伞形标头中包含Obj-C标头 如果您想在Obj-C类中使用Swift方法,您需要将它们包括为

    #import <ProductName/ProductModuleName-Swift.h>
    

    如果您正在构建框架或

    #import "ProductModuleName-Swift.h"
    

    如果你在做一个常规项目

        2
  •  -2
  •   Sandor K    8 年前

    在这种情况下,最好的方法可能是简化框架的设计,只需重写objective-c遗留代码信息swift。您提到,Swift中已经有部分代码库,这将使完成转换更加容易。

    推荐文章