Objective-C调用Swift函数

时间:2016-12-01 06:49:07

标签: ios objective-c swift objective-c-swift-bridge

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

func SomeSwift()
{

}

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

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

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

如下:

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

  }
}

1 个答案:

答案 0 :(得分:6)

参考Apple Documentation关于从Objective-C使用Swift:

  

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

意味着你的班级应该是@objc class SomeSwift: NSObject(你是对的!),但是你无法在Swift文件中访问整个事情

  

当您创建一个源自Objective-C类的Swift类时,   类及其成员 - 属性,方法,下标和   初始化程序 - 与Objective-C兼容是自动的   可从Objective-C获得。此不包括仅限Swift的功能,例如   这里列出的那些:

     

泛型

     

元组

     

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

     

Swift中定义的结构

     

Swift中定义的顶级函数

     

Swift中定义的全局变量

     

Swift中定义的Typealiases

     

Swift风格的可变参数

     

嵌套类型

     

咖喱功能

Reference

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

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

enter image description here

  

@objc只能在课程成员@objc协议时使用   和类的具体扩展。

建议删除@objc