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