Intereting Posts
Как разместить 3D-модель типа obj с яблочным arkit NSTextAlignment enum NSTextAlignment к другому перечислению UITextAlignment Как узнать, какой метод выполнил селектор в Objective-C Как отобразить мое приложение в представлении активности? Как найти требуемые максимумы в данных ускорения, полученных с iPhone? iOS didEnterRegion никогда не вызывал Я пытаюсь добавить subview с кнопкой к представлению окна, но кнопка в subview отправляет освобожденный экземпляр Синхронизация SQL Server с IOS Sqlite Разрешенная защита файлов для файлов данных iOS, кодировка? Как настроить Tableview Cell Movable с помощью кнопки (Share, Done, Delete)? и это действие? iOS – Загрузить файл на Dropbox (Вход пользователя) Значок слева направо не работает в Swift Предварительный просмотр и изменение размера в Xcode 6.3 Кадр содержимого UICollectionView отображается правильно на эмуляторе, неправильно на устройстве Что я настроил в методе `init` в сравнении с методом` viewDidLoad`?

Как сделать Objective-C Class факультативным на основе Framework загружен?

У меня есть файл класса в фреймворке 'X'. В файле класса используются методы структуры 'Y'. Есть ли способ сделать файл класса необязательным, если фреймворк «Y» отсутствует во время выполнения. Таким образом, он не должен бросать какие-либо ошибки компиляции в проект xcode во время компиляции проекта с каркасом «X» и без рамки «Y».

Да, не статически загружайте объекты класса Y класса, напрямую передавая им сообщения.

Допустим, у рамки Y есть класс YYYClass . Когда вы ссылаетесь на YYYClass внутри рамки X, вы обычно делаете следующее.

 YYYClass *instance = [[YYYClass alloc] init]; 

Вызов [YYYClass alloc] передает сообщение YYYClass . Теперь для компоновщика требуется YYYClass .

Однако сделайте что-то немного другое.

 YYYClass *instance = [[NSClassFromString(@"YYYClass") alloc] init]; 

Теперь объект класса Framework Y динамически загружается, поэтому компоновщик не требует, чтобы класс был доступен.

Если структура Y не находится в конечном двоичном формате, то NSClassFromString(@"YYYClass") возвращает Nil (версия класса nil ). [Nil alloc] возвращает nil и [nil init] возвращает nil .

Конечным эффектом являются все экземпляры классов класса Y, которые будут nil . Вам нужно ожидать такого поведения и справиться с этим.