Intereting Posts
Странное альфа-смешивание с UIImageView на UIView Мимическое поведение UITableViewCell для UIView Кэшированные плитки не отображаются – Mapbox IOS SDK Должен ли я создавать уникальный Apple App ID для каждого приложения для App Store? Ошибка приложения сканера при загрузке файла приложения Изменить UIPageViewControllerOptionInterPageSpacingKey на ходу? Не расходуется на покупки приложений в iOS. Нужен ли мне сервер? RestKit 0.20.0-rc1 – Как сопоставить несколько параметров ошибки? Умные способы лучше проверить GPS-код, используя только симулятор iPhone? executeFetchRequest: ошибка: зависает в основном потоке iAds не отображается в тестовых приложениях, хотя я присоединился к iAd Network? Рисование строки непрерывно по коду Как оживить переходы в UITabBarController, используя более 5 ViewControllers? как я стереть данные NSCoder, чтобы он не был доступен при следующем запуске приложения? Как изменить цвет заголовка MFMailComposeViewController?

Как сделать 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 . Вам нужно ожидать такого поведения и справиться с этим.