Objective-C 访问 Swift 包函数

Objective-C accessing Swift Package functions

目标: 在 Objective-C 中使用 Swift 包。
我想做的就是对 ObjC 中访问 Swift vars & func() 的正确语法有一个简单、基本的理解。

这是关于using Objective-C with a Swift package的问题的第二部分。

这是我正在尝试访问的 Swift 包文件...
我专注于 Swift class 访问。
但我也想知道如何访问 struct.

import Foundation

public struct RicStruct {
    public private(set) var text = "Hello, World!"

    public init() {
    }
    
    public func sayHello() -> String {
        "Hello Ric!"
    }
}

public class RicClass: NSObject {
    @objc public var msg = "Mother has a feeling, I might be too appealing."
    @objc public let text = "Hello Everybody!"
    
    public override init() {}
    
    public func sayHello() {
            print(text)
        }
    
    public func doSomething() {
        print("Inside doSomething()")
    }
}

这是 Objective-C 父尝试访问 Swift-Package vars & func:

问题:访问的正确语法是什么:

  1. Swift class & 结构函数,
  2. Swift var/let?

你声明了

public func sayHello() {
    print(text)
}

这使得方法 sayHello public 跨模块,但不会将其公开给 Objective-C。相反:

@objc public func sayHello() {
    print(text)
}

我没有将“@objc”限定符添加到 Swift 函数。
我曾错误地认为没有必要,因为根据 class 声明,它是 NSObject class 的成员。

此外,不需要添加 .h ObjC <--> Swift 桥接文件。