Я создаю приложение, использующее преимущества технологий 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