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

Swift:如何为静态库创建外部接口(Objective-C.h中的公共头模拟),swift,Swift,我需要用Swift创建一个静态库, 我需要知道如何为库实现接口 在Objective-C中,我可以在构建阶段将所需的标题标记为public, 但是Swift中没有任何标题和接口 用Swift我该怎么办?简单地说:你没有 Swift不是一种将头和实现分开的语言。当您基于Swift创建库或框架并仅供Swift使用时,DEFINES\u MODULE的Xcode默认构建设置已经为您完成了这项工作。这将创建一个.swiftmodule文件,该文件将由其他Swift项目中的import使用 但是,如果希望

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

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

用Swift我该怎么办?

简单地说:你没有

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


但是,如果希望代码可以从Objective-C导入,则可能需要检查是否也启用了
SWIFT\u INSTALL\u OBJC\u HEADER
build设置(据我所知,这是框架的默认设置)。然后,Swift编译器将为您生成一个
-Swift.h
文件,您可以将其导入Objective-C代码中以访问您的Swift类和函数。

如果您希望您的
Swift
框架向接口公开某些类,只需标记“实体”(函数、变量等)
public

public class Class {}
public var variable: Int
public func function() { }
默认情况下,所有实体都具有
内部
访问权限

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

来源:。

XCode beta 5是否改变了这一点?我在我的项目(Cocoa Touch Library with Swift)的任何地方都找不到.swiftmodule文件。有没有办法让Xcode为每个Swift文件或对象生成一个-Swift.h文件,而不是一个将所有文件集中在一起的文件?或者换句话说:当苹果发布以Swift本机编写的Cocoa Touch时,他们将如何阻止我看到他们的实现源代码?这里是一个构建阶段脚本,您可以使用。