Приложение Mac OS X с обратной совместимостью 10.6 и 10.7 при использовании NSPopovers - PullRequest
6 голосов
/ 04 августа 2011

Каков наилучший способ реализации обратной совместимости, когда создается приложение для Mac OS X 10.7, но также поддерживается совместимость для 10,6?

У меня есть приложение, которое использует NSPopover, когда клиент равен 10,7, иNSMenu, когда клиент 10.6.Проблема заключается в том, что при запуске приложения на компьютере 10.6 происходит сбой приложения с исключением «символ не найден», который говорит (что-то вроде) «_ OBJC $ _ NSPopover не найден в AppKit»,Нужно ли использовать идентификатор во всем приложении для новых функций?

1 Ответ

2 голосов
/ 04 августа 2011

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

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

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

...