我需要用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官方博客