Использовать стороннюю структуру, встроенную в динамическую структуру

Насколько я понимаю, большое изменение в динамической структуре ios и статике связано с тем, что статичность статически связана с кодом во время соединения (до запуска), а динамика связана во время запуска / выполнения

Теперь у меня есть тестовый проект:

Мой проект имеет динамическую структуру, связанную с ним – A.framework.

import A.framework

В A.framework есть встроенная внутри него структура – B.framework

В моем основном проекте я хочу использовать классы из B.framework

Теперь я вижу это с простой операцией импорта в основном проекте:

 import B.framework 

Это действительно работает, и я могу использовать код изнутри B.framework, который встроен в связанную A.framework

Как это может быть? это что-то безопасное и надежное в использовании? Как основной проект распознает B.framework?

Как насчет случаев, когда основной проект напрямую связывает B.framework с проектом? в этом случае я вижу много «повторяющихся ошибок символов» во время соединения

Самое главное, как я могу построить A.framework, не вставляя B.framework внутри него, в то время как вне курса, используя его классы и функции

Любые разъяснения помогут 🙂

2 Solutions collect form web for “Использовать стороннюю структуру, встроенную в динамическую структуру”

Как вы заметили, связывание B.framework приведет к дублированию символов. Вот почему A.framework не должен вставлять B.framework. Вы никогда не должны вставлять фреймворк в другую структуру, если есть вероятность, что потребительское приложение позаботится о встроенной инфраструктуре (на практике это означает, что вы действительно просто не должны этого делать).

A.framework был неправильно упакован. Если вы упаковали его, вы должны удалить встроенную инфраструктуру и связать все на уровне приложения. Если кто-то еще упаковал его, вы должны открыть проблему с ними, чтобы исправить эту ошибку. Эта проблема не нова для динамических фреймворков. Это также проблема со статическими рамками. Единственное подходящее время для привязки зависимостей – это уровень приложения.

(Существует исключение, если вы контролируете всю экосистему (например, Apple). Тогда такие вещи, как зонтичные рамки , приемлемы, но вы не Apple.)

EDIT: нормально связывать, но не внедрять, общую структуру в другую общую структуру. Ключ состоит в том, что единственная копия общей структуры должна поступать из приложения верхнего уровня. Поскольку этот заключительный шаг ссылки будет выполняться при загрузке, тогда у вас не будет повторяющихся символов, потому что есть только одна копия общей структуры. Просто не вставляйте подрамнику в свою.

Например:

  • Создать проект с целевой картой
  • Перетащите GMA.framework в целевую среду рамки (это приведет к ее привязке, но не к внедрению)
  • Создать цель приложения
  • У приложения есть ссылка как GMA.framework, так и ваша тестовая среда. Это будет отлично работать без коллизий, потому что есть только одна GMA.framework, и она только встроена в приложение.

Если вы используете несколько фреймворков, вы можете попробовать Cocoa Pods менеджер зависимостей, который поможет вам получить доступ к нескольким фреймворкам. Это также позволит вам сохранить точку останова, которая поможет вам отлаживать даже внутри рамки, а также вы можете делать изменения.

  • viewDidLayoutSubviews получает бесконечно после переключения на xcode 6
  • Добавить прозрачное пространство вокруг UIImage
  • Как работает UIEdgeInsetsMake?
  • UINavigationController имеет дополнительный пробел в статусе
  • Захват пользовательского действия кнопки UINavigationController
  • Декодирование PNG в кодировке PNG PNG в NSString
  • iOS требует двойного касания для простого элемента ссылки
  • Как контролировать каталог локальных документов NSMetaDataQuery
  • touchsMoved обнаружение внутри подвью
  • searchBarTextDidBeginEditing метод делегата, вызываемый два раза
  • activateConstraints: and deactivateConstraints: не сохраняется после вращения для ограничений, созданных в IB
  • Interesting Posts

    NSDictionary Vs. NSArray

    Как Alamofireimage сохраняет изображение в кэш диска?

    Google Maps iOS SDK некоторые карты, загруженные зеленым прозрачным цветом

    Как получить историю звонков с iphone?

    ALAssetsLibrary assetForURL: всегда возвращает ноль для фотографий в «My Photo Stream» в iOS 8.1

    Как обернуть слова в UILabel

    Установите NSDictionary в HTTPBody и отправьте с помощью метода POST

    Не удается загрузить приложение IOS в iTunes с помощью Xcode 7 и GoogleMaps с подфайлом

    iOS – изменение цветовой температуры экрана

    Что такое имя и размер шрифта по умолчанию для значений выбора UIPickerview в iOS 7 и iOS 6

    В чем разница между облегченной версией и демо?

    xcode Проблема с компилятором LLMV 3.1

    Скрытие обратных изображений в iCarouselTypeRotary view для iCarousel

    Как сообщить Xcode автоматически установить режим рендеринга изображений в iOS 7

    Как создать тисненую кнопку в объективе c программно?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.