abdulgalimov
@abdulgalimov

Как в ObjectiveC сделать классы уникальными для каждой static библиотеки?

Есть две статик библиотеки: lib1.a и lib2.a . В каждой библиотеке есть своя реализация класса A.
Проблема в том, что при выполнении, если первым использовался класс из библиотеки lib1, этот же класс используется и в библиотеке lib2.

Как сделать так, чтобы каждая библиотека использовала свою собственную реализацию класса A?
  • Вопрос задан
  • 2237 просмотров
Пригласить эксперта
Ответы на вопрос 1
Flanker_4
@Flanker_4
Не уверен что это сработает, нужно пробовать
1) Получить Class из нужной либы
что-то типа этого (код писал прямо тут, ориентируясь на )
static inline Class getClassFromLib1(){
     int numberOfClasses = objc_getClassList(NULL, 0);
    Class *classes = calloc(sizeof(Class), numberOfClasses);
    Class retClass = Nil;
    numberOfClasses = objc_getClassList(classes, numberOfClasses);
    for (int i = 0; i < numberOfClasses; ++i) {
        Class c = classes[i];
        if (([NSBundle bundleForClass:c] ==/*нужная либа*/)&&(/*проверка на нужный класс*/)) {
               retClass = c;
               break;
        }
    }
    free(classes);
    return retClass;
}

2) на основе полученного классов создать объект.
Class a = getClassFromLib1();
   id objectClass1 = [[a alloc] init];


Аналогично для второй либы.

Только добавьте "кеширование" получения класса
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы