0

我一直在努力解决这个问题。所以我想在 swift 4.1 上创建一个新的简单的新框架。

我的代码是这样的:

public class TestStupidity: NSObject {
    public static var shared = TestStupidity()
    public func hello() {
        print("hello")
    }
}

然而,即使是这一小段代码也不适合我。公共类及其变量不会出现在头文件中。

我已经在 GitHub 上的链接上上传了这个项目。

谁能帮我弄清楚我在这里做错了什么?

4

2 回答 2

0
  1. 使用open关键字:一个类可以在定义模块之外open访问和 子类化。开放类成员在定义模块之外是可访问和可覆盖的。还要添加@objcMembers

    @objcMembers 公开课 ARCompactDeviceInfo: NSObject {}

  2. 转到Target -> Build Phase -> Headers在Public中添加 Umbrella 头文件(与项目同名的文件)文件, 如图所示。就像在我的项目中一样,我有 CryptoAPI.h 和其他隐藏的文件 Example of Swift 4 Framework在此处输入图像描述

  3. 转到 Target -> General -> Embedded Binaries 拖动您的框架。 在此处输入图像描述

已编辑: @Amogh Shetigar:添加上述详细信息后,我已经下载了您的项目并与示例应用程序集成。 这是框架和集成应用程序的 URL

于 2018-04-19T12:30:18.450 回答
0

请按照以下步骤操作,看看它是否正常工作:

创建 Cocoa Touch Framework 类型的新项目,调用它Tester

添加名为 TestStupidity.swift 的新 Swift 文件

将问题中的代码添加到文件中:

public class TestStupidity: NSObject {
    public static var shared = TestStupidity()
    public func hello() {
        print("hello")
    }
}

将新目标添加到 Single View App 类型的项目并调用它TesterApp

选择 TestApp 目标,然后在 General 选项卡中,单击 Embedded Binaries 的 + 号。选择测试器框架

在 ViewController.swift 文件中,将代码设置为:

import UIKit
import Tester

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let testClass = TestStupidity()
        testClass.hello()
    }
}

运行 TestApp 并在输出中看到“hello”。

于 2018-04-19T14:58:05.467 回答