2017-02-01 3 views
0

Мы создали два целевых объекта (Target_One & Target_Two) для того же проекта.Swift 3 Как управлять разными делегатами для разных целей

  • Target_One содержат SDK1 и делегировать Target1SDKHelperDelegate
  • Target_Two содержат SDK2 и делегировать Target2SDKHelperDelegate

Причина для создания двух целевых: нам нужно загрузить два приложения с одинаковыми UI, но с другой SDK-интеграцией.

Как известно, каждый SDK имеет своих делегатов. Поэтому мы хотим применить делегатов, специфичных для цели.

Пример: Target_One имеет класс с именем MyClass

class MyClass: NSObject, Target1SDKHelperDelegate { 

} 

В классе выше, мы реализовали Target1SDKHelperDelegate делегат. Мы также используем тот же класс для Target_Two, и мы хотим использовать Target2SDKHelperDelegate для Target_Two.

Итак, как мы можем поставить двух разных делегатов для двух разных целей?

Мы также знаем, что для управления целью мы должны использовать нижеприведенный код.

#if Target_One 

#else 

#endif 

Но кто-нибудь сказать нам, как управлять с помощью делегата выше?

Мы хотим сделать что-то вроде:

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

    } 
+0

Было бы проще просто реализовать обоих делегатов в одной и той же цели, но в инициализации активировать только один из них? – Russell

+0

@ Russell Но мы не хотим добавлять оба SDK для обеих целей. У нас будет один SDK для одной цели, поэтому нам нужно реализовать только одного делегата на цель. – iDev

ответ

0

На самом деле это довольно простой и прямой. В последнее время я столкнулся с проблемой того, что размер iPA стал слишком большим, как 20 МБ. Я отключил ненужные функции от некоторых целей и должен был управлять общими файлами, такими как Appdelegate, когда у него есть ссылки на файлы с отключенными функциями. Решил это, просто дублируя файл Appdelegate и помещая его в определенные пути, связанные с конкретными целями. Затем включил каждый файл appDelegate под свою цель. Это сработало . Идея такая же, как если бы у вас были файлы конфигурации push-уведомлений pLists для нескольких целей или папок imageAssets. Надеюсь это поможет.

Смежные вопросы