Swift 3如何管理不同目标的不同代理

时间:2017-02-01 07:39:09

标签: ios delegates swift3 ios-targets

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

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

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

众所周知,每个SDK都有自己的代理。因此,我们希望应用特定于目标的代理。

示例:Target_One有一个名为 MyClass

的类
class MyClass: NSObject, Target1SDKHelperDelegate {

}

在上面的课程中,我们实现了Target1SDKHelperDelegate委托。 我们也为Target_Two使用相同的类,我们希望Target_Two使用Target2SDKHelperDelegate。

那么我们如何才能为两个不同的目标设置两个不同的代表?

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

#if Target_One

#else

#endif

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

我们想做类似的事情:

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

    }

2 个答案:

答案 0 :(得分:1)

可以尝试使用以下代码使用typealias:

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

public final class SettingsViewController: DELEGATES {

答案 1 :(得分:0)

实际上它非常简单直接。最近我遇到的问题是iPA的大小太大了20MB。我禁用了某些目标不需要的功能,并且当它引用了禁用的功能文件时,必须管理Appdelegate等共享文件。通过简单地复制Appdelegate文件并将其放在与特定目标相关的特定路径中解决了这个问题。然后在其目标下包含每个appDelegate文件。有效 。这个想法是相同的,就像你有firebase推送通知pLists多个目标或imageAssets文件夹的配置文件。希望这会有所帮助。