ios - Swift 3 如何管理不同目标的不同委托(delegate)

标签 ios delegates swift3 ios-targets

我们为同一项目创建了两个目标(Target_One 和 Target_Two)。

  • Target_One 包含 SDK1 并委托(delegate) Target1SDKHelperDelegate
  • Target_Two 包含 SDK2 并委托(delegate) Target2SDKHelperDelegate

创建两个目标的原因:我们需要上传两个具有相同 UI 但不同 SDK 集成的应用程序。

众所周知,每个 SDK 都有自己的委托(delegate)。所以我们想应用特定于目标的委托(delegate)。

示例:Target_One 有一个名为 MyClass 的类

class MyClass: NSObject, Target1SDKHelperDelegate {

}

在上面的类中,我们实现了 Target1SDKHelperDelegate 委托(delegate)。 我们也为 Target_Two 使用相同的类,并且我们希望为 Target_Two 使用 Target2SDKHelperDelegate。

那么我们如何让两个不同的委托(delegate)去实现两个不同的目标呢?

我们还知道要管理目标,我们应该使用下面的代码。

#if Target_One

#else

#endif

但是有人告诉我们如何使用上面的方法来管理委托(delegate)吗?

我们想做这样的事情:

 class MyClass: NSObject
       #if Target_One
            , Target1SDKHelperDelegate 
      #else
            , Target2SDKHelperDelegate 
      #endif
   {

    }

最佳答案

可以尝试像下面的代码一样使用类型别名:

#if FREE_VERSION
public typealias DELEGATES = UIViewController & AttributeUDBClientMainDelegate & AttributeSubscriptionHelperDelegate
#else
public typealias DELEGATES = UIViewController
#endif

public final class SettingsViewController: DELEGATES {

关于ios - Swift 3 如何管理不同目标的不同委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41974346/

相关文章:

objective-c - React Native 和 Objective C 委托(delegate)

objective-c - 如何在 objective-c 中释放 "delegate"内存?

iphone - 在 iOS 上的 Google+ 上分享?

android - 能源经济 : BLE device - when to make connectable?

objective-c - 您应该在使用委托(delegate)的类中还是在类本身中将委托(delegate)设置为 nil

ios - 按钮触摸事件

swift - `JSONSerialization.data` 类型声明明显不一致

ios - 简单的Webview:navigationDelegate在启动时崩溃

iOS:应用内购买管理多个具有升级和降级选项的自动更新订阅

ios - 在 SLComposeViewController 顶部显示附加图像