Обратная совместимость приложения Mac OS X 10.6 и 10.7 при использовании NSPopovers

Как лучше всего реализовать обратную совместимость при создании приложения для Mac OS X 10.7, сохраняя при этом совместимость с 10.6?

У меня есть приложение, которое использует NSPopover, когда клиент 10.7, и NSMenu, когда клиент 10.6. Проблема в том, что при запуске приложения на машине 10.6 приложение вылетает с ошибкой "символ не найден", говоря, что (вроде) "_OBJC$_NSPopover не может быть найден в AppKit ". Должен ли я использовать идентификатор во всем приложении для новых функций?


person Ole Viaud-Murat    schedule 04.08.2011    source источник


Ответы (1)


Вы можете получить объект класса для NSPopover, используя функцию NSClassFromString(), которая возвращает объект класса, который вы можете использовать, например, для создания экземпляров.

id  thePopover = [[NSClassFromString(@"NSPopover") alloc] init];

другая возможность состоит в том, чтобы иметь два отдельных файла пера, один для 10.6 и один для 10.7, кончик не должен быть полным интерфейсом, только частью, которая содержит NSPopover, а затем загружать соответствующий файл пера во время выполнения.

person Nathan Day    schedule 04.08.2011