如何将主应用程序类传递给框架

时间:2019-09-04 17:14:42

标签: ios swift frameworks

我最近在我的项目中添加了框架,并且可以正常工作,但是有一些实现仅存在于我需要传递给框架的应用中。我不确定这是否可行,di希望在可能的情况下提出建议。

预期的结果是将主应用程序类的实例添加到框架,以便我可以在框架中使用主应用程序中的功能。

Scuedo代码:

在框架中创建一个协议:

public protocol FrameworkBridge: class {
    func tapOnClaimToken()
}

在主应用程序中,创建一个确认框架协议的类:

 class FrameworkBridgeImplementation: FrameworkBridge {
    func tapOnClaimToken() {
        // call some code which only exists in the main app
    }
}

框架中的另一个类:

 class  AnotherClassIntheFramework {

    var frameworkBridge: FrameworkBridge?

    func performAction {
        frameworkBridge.tapOnClaimToken()
    }
}

1 个答案:

答案 0 :(得分:2)

要将对象传递给框架,框架通常应定义其期望的某种协议。然后将您的主要应用程序类型与之匹配,然后将其传递给框架。

如果所讨论的实现只是一个函数,通常将函数本身作为参数传递会更容易,更好。

这种模式很常见;这就是您能够将自定义UITableViewDelegate实现传递给UIKit并允许UIKit调用您的方法的方法。