【发布时间】:2019-09-04 17:14:42
【问题描述】:
我最近在我的项目中添加了框架,它工作正常,但是我的应用程序中存在我需要传递给框架的实现。我不确定这是否可能,如果可能的话,我想就如何实现这一目标提出建议。
预期的结果是将主应用程序类的实例添加到框架中,这样我就可以在框架中使用主应用程序中的功能。
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()
}
}
【问题讨论】:
-
什么是“主应用程序类”?如果您指的是 AppDelegate,那么您几乎可以肯定不应该将其传递给任何东西(应用程序委托的工作是为 UIApplication 提供委托方法,而不是成为全局状态的垃圾场)。但无论如何,答案都是“在框架中创建一个协议,并将符合该协议的对象传递给框架”。详细情况将取决于您的具体情况。
-
主应用程序类是指应用程序中的任何类而不是 appdelegate
-
听起来是一个非常糟糕的方法。 “框架”如何知道您正在传递的类中有哪些功能?您可能应该编辑您的问题以准确解释您要完成的工作 - 具体而言,而不是“获取一些未描述的框架以使用一些未描述的功能”。
-
您编辑的代码看起来完全正确。我假设在你的应用程序代码的某个地方你有
anotherClassInTheFramework.frameworkBridge = self或类似的东西。看起来你已经完成了。这里有问题吗?
标签: ios swift frameworks