4

文件中定义的 Swift 函数MySwift.swift

func SomeSwift()
{

}

SomeSwift()没有在任何 Swift 类中定义,它只是一个纯函数。

CMD+B构建项目后,打开Project-Swift.hSomeSwift()那里不显示。

Swift 中的函数是否必须在某个 Swift 类中定义?并带有@objc标记?

如下所示:

@objc class SomeSwift: NSObject {
   func SomeSwift()
  {

  }
}
4

1 回答 1

7

参考关于从 Objective-C 使用 Swift 的Apple 文档

Swift 类必须是 Objective-C 类的后代才能在 Objective-C 中访问和使用

意味着您的课程应该是@objc class SomeSwift: NSObject(您是对的!),但是您不能访问Swift 文件中的整个内容:

当你创建一个继承自 Objective-C 类的 Swift 类时,与 Objective-C 兼容的类及其成员(属性、方法、下标和初始化器)会自动从 Objective-C 中获得。这不包括仅 Swift 的功能,例如此处列出的功能:

泛型

元组

在没有 Int 原始值类型的 Swift 中定义的枚举

Swift 中定义的结构

Swift 中定义的顶级函数

Swift 中定义的全局变量

Swift 中定义的类型别名

Swift 风格的可变参数

嵌套类型

咖喱函数

参考

因此,您不能使用SomeSwift顶级功能。

即使您尝试@objc在其声明之前添加,编译器也会告诉您:

在此处输入图像描述

@objc 只能在与类的成员、@objc 协议和类的具体扩展一起使用时使用。

建议删除@objc.

于 2016-12-01T07:58:32.080 回答