0

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

这是关于将 Objective-C 与 Swift 包一起使用的问题的第二部分。

在此处输入图像描述

这是我正在尝试访问的 Swift 包文件...
我专注于 Swift访问。
但我也想知道如何访问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()")
    }
}

这是试图访问 Swift-Package vars & func 的 Objective-C 父级:

在此处输入图像描述

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

  1. Swift 类和结构函数,
  2. 斯威夫特 var/let?
4

2 回答 2

3

你声明了

public func sayHello() {
    print(text)
}

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

@objc public func sayHello() {
    print(text)
}
于 2021-07-31T17:20:23.723 回答
0

我没有将 '@objc' 限定符添加到 Swift 函数中。
我错误地认为这不是必需的,因为每个类声明都是 NSObject 类的成员。

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

在此处输入图像描述

于 2021-07-31T17:23:01.673 回答