在MySwift.swift
文件中定义的Swift函数:
func SomeSwift()
{
}
SomeSwift()
没有在任何Swift类中定义,它只是一个纯函数。
在CMD + B建立项目后,打开Project-Swift.h
,那里没有显示SomeSwift()
。
是否必须在某些Swift类中定义Swift中的函数?和@objc
标记?
如下:
@objc class SomeSwift: NSObject {
func SomeSwift()
{
}
}
参考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风格的可变参数
嵌套类型
咖喱功能
所以,你不能使用SomeSwift
顶级功能。
即使你试图在声明之前添加@objc
,编译器也会告诉:
@objc只能在类成员,@ objc协议和类的具体扩展时使用。
建议删除@objc
。