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



我需要用Swift创建一个静态库,我需要知道如何为库实现接口。

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

我该怎么处理Swift?

简单地说:你没有。

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

如果你想让你的代码可以从Objective-C导入,你可能想检查SWIFT_INSTALL_OBJC_HEADER构建设置是否也启用了(据我所知,这是框架的默认设置)。然后Swift编译器会为你生成一个<ProductName>-Swift.h文件,你可以在Objective-C代码中导入它来访问你的Swift类和函数。

如果你想让你的Swift框架向接口公开某些类,只需标记"实体"(函数,变量等)public:

public class Class {}
public var variable: Int
public func function() { }

默认情况下,所有实体都具有internal访问权限。

  • public实体被用作API,并且可以被任何导入模块的文件访问,例如作为几个项目中使用的框架。internal实体可用于包含该定义的整个模块(例如应用程序或框架目标)。
  • private实体只能在定义它们的源文件中使用。

来源:Swift官方博客

最新更新