我可以创建一个符合内部协议的 iOS 框架并在我的项目中定义相同的协议吗?

Can i create a an iOS framework conforming to an inside protocol and also define the same protocol in my project?

我正在创建一个符合特定协议的框架

MyTestFramework.framework

public protocol SBFProtocol {

    static var sharedInstance: SBFProtocol { get }
    func GetVersion() -> String
    func GetBuildNumber() -> String
}
public final class FrameworkBase : SBFProtocol {

   public static var sharedInstance: SBFProtocol = FrameworkBase()


   public func GetVersion() -> String {
       return "1.0"
   }

   public func GetBuildNumber() -> String {
       return "0"
   }
}

然后我在 class 中重新定义相同的协议并导入框架。

我的项目

import MyTestFramework

public protocol SBFProtocol {

    static var sharedInstance: SBFProtocol { get }
    func GetVersion() -> String
    func GetBuildNumber() -> String
}

var testInstance: SBFProtocol = MyTestFramework.FrameworkBase.sharedInstance

有没有办法使用我自己的协议定义来访问该框架对象?

我一直收到错误消息:

类型 'MyTestFramework.SBFProtocol' 的值不符合指定类型 'MyProject.SBFProtocol'

有什么办法吗? 原因是我想将该框架实例传递给另一个框架(称之为 annonymousFramework)并且我希望它只知道 SBFProtocol 而不是整个 MyTestFramework

这有可能吗?

最后我是这样解决的:

我已经将协议包装在它自己的框架项目中(仅包含一个 protocol.swift 文件,其中包含所有定义)

然后我将 protocol.framework 包含在所有使用它的 projects/frameworks 中。

这样编译器将其识别为相同的协议,我从中获得的另一个好处是我可以在我的 protocol/framework 中强制实施最低 iOS 版本、有效的构建架构和更多项目设置混合体。