如何将主应用 class 传递给框架
How to pass main app class to a framework
我最近在我的项目中添加了框架,它工作正常,但是只有我的应用程序中存在我需要传递给框架的实现。我不确定这是否可行,如果可能的话,我想就如何实现这一目标提出建议。
预期的结果是将主应用程序 class 的实例获取到框架中,这样我就可以在框架中使用主应用程序中的功能。
Scuedo 代码:
在框架中创建一个协议:
public protocol FrameworkBridge: class {
func tapOnClaimToken()
}
在主应用程序中创建一个 class 以确认框架协议:
class FrameworkBridgeImplementation: FrameworkBridge {
func tapOnClaimToken() {
// call some code which only exists in the main app
}
}
框架中的另一个Class:
class AnotherClassIntheFramework {
var frameworkBridge: FrameworkBridge?
func performAction {
frameworkBridge.tapOnClaimToken()
}
}
要将对象传递给框架,框架通常应该定义一些它期望的协议。然后将您的主要应用程序类型与其匹配,并将其传递给框架。
如果所讨论的实现只是一个函数,通常将函数本身作为参数传递会更容易也更好。
这种模式很常见;这正是您能够将自定义 UITableViewDelegate 实现传递给 UIKit 并允许 UIKit 调用您的方法的方式。
我最近在我的项目中添加了框架,它工作正常,但是只有我的应用程序中存在我需要传递给框架的实现。我不确定这是否可行,如果可能的话,我想就如何实现这一目标提出建议。
预期的结果是将主应用程序 class 的实例获取到框架中,这样我就可以在框架中使用主应用程序中的功能。
Scuedo 代码:
在框架中创建一个协议:
public protocol FrameworkBridge: class {
func tapOnClaimToken()
}
在主应用程序中创建一个 class 以确认框架协议:
class FrameworkBridgeImplementation: FrameworkBridge {
func tapOnClaimToken() {
// call some code which only exists in the main app
}
}
框架中的另一个Class:
class AnotherClassIntheFramework {
var frameworkBridge: FrameworkBridge?
func performAction {
frameworkBridge.tapOnClaimToken()
}
}
要将对象传递给框架,框架通常应该定义一些它期望的协议。然后将您的主要应用程序类型与其匹配,并将其传递给框架。
如果所讨论的实现只是一个函数,通常将函数本身作为参数传递会更容易也更好。
这种模式很常见;这正是您能够将自定义 UITableViewDelegate 实现传递给 UIKit 并允许 UIKit 调用您的方法的方式。