Как избежать проблем слабых ссылок в фреймворке XCode? - PullRequest
2 голосов
/ 30 марта 2010

Я создаю приложение, использующее преимущества технологий Mac OS X 10.6, но не отказываясь от обратной совместимости с 10.5 Leopard.

Я делаю это, устанавливая SDK 10.6 в качестве базового SDK, слабо связывая все платформы и устанавливая цель развертывания 10.5, как описано в:

http://developer.apple.com/mac/library/DOCUMENTATION/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

Это отлично работает; перед тем как сделать звонок только для Snow Leopard, мне нужно проверить, действительно ли существует селектор или класс. Или я могу просто проверить версию ОС перед звонком.

Проблема в том, что это невероятно хрупкое. Если я сделаю один вызов, который будет 10.6, я просто потеряю совместимость с Leopard. Поэтому использование даже обычной функции завершения кода может быть опасным.

Мой вопрос: есть ли способ проверить, какие вызовы не определены в 10.5, перед сборкой релиза? Подойдет какой-то статический анализ или даже просто трюк (цель, установленная другим SDK?).

Я, очевидно, должен тестировать на машине Leopard перед выпуском чего-либо, но даже в этом случае я не могу пройти все пути программы перед каждым выпуском.

Любой совет будет оценен.

С уважением,

Frank

1 Ответ

1 голос
/ 30 марта 2010

Вы можете изменить целевой SDK на 10,5. Затем компилятор выведет warning: definition for '-snowLeopardOnlyMethod:' not found сообщений.

...