当前位置: 首页 > 面试题库 >

Swift:如何为静态库创建外部接口(Objective-C .h中的公共标头模拟)

江敏学
2023-03-14
问题内容

我需要使用Swift创建一个静态库,并且我需要知道如何实现该库的接口。

在Objective-C中,我可以在 构建阶段 将所需的标头标记为public ,但是Swift中没有任何标头和接口。

我应该对Swift做些什么?


问题答案:

简而言之:您没有。

Swift不是一种将标头和实现分开的语言。当您创建基于Swift的库或框架并且仅供Swift使用时,Xcode的默认构建设置DEFINES_MODULE已经为您完成了工作。这将创建一个.swiftmodule文件,该文件将import在其他Swift项目中使用。

但是,如果您希望代码可以从Objective-
C导入,则可能要检查是否SWIFT_INSTALL_OBJC_HEADER还启用了构建设置(据我所知,默认情况下,框架设置是启用的)。然后,Swift编译器将为您生成一个<ProductName>-Swift.h文件,您可以将其导入Objective-
C代码中以访问您的Swift类和函数。



 类似资料:
  • 问题内容: 例如,在Java中,我可能有一个类,并且有一个名为的静态方法,因此我可以执行以下操作: 我该如何在目标C中做类似的事情? 非常感谢 问题答案: 在Objective-C中,您将此称为“类方法”,请参见此处: 该 + 是最重要的事情; 您可以这样调用方法:

  • 如何调用从公共静态空白到非静态的公共空白碎片类?或者有另一种方法在(listViewHolder.dot.setOnClickListener(new View.OnClickListener()和公共无效搜索3())

  • 我领导的应用程序有一个相当大的代码库(70.000行),所以一次过渡它是不可能的。

  • 现在我想为我们的系统开发一个通用的邮件服务。在设计时,我们希望开发一个生产者和消费者。在消费者方面,我们可以开发和部署或应用程序,但在生产者方面,我们希望提供一个通用的邮件客户端,如下面的接口,并为其他系统建立jar依赖关系。 但我看到spring boot和spring cloud使用了许多声明性方法,似乎必须使用一个应用程序类,但我只想要一个类引用,不需要部署。我不知道如何实施它。

  • 我有一个抽象类的许多子类,每个子类都声明了一个同名的公共静态final字段。我在考虑在抽象超类中包含这个字段,而不初始化它,并希望每个子类都能被强制初始化它。 我之所以这么想,是因为抽象类的所有子类都声明了一个名为UNIQUE_ID的公共静态最终字符串字段,并且每个子类都有必要声明一个具有该名称的字段。 我希望我的问题足够清楚,如果不清楚,请告诉我。 能不能做一些和这个差不多的事情? 编辑:添加代

  • 问题内容: 和之间有什么区别? 例如 : 要么 问题答案: 尽管您 确实 希望遵守约定,但在功能上没有什么区别(字节码将 完全相同 ),请访问JLS-8.3.1。场修饰符: __ 这将是奇怪的,看.. 我也建议您访问checkstyle。 编辑: 从同一页面链接到该部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls