Между чем различие
__ IPHONE_OS_VERSION_MAX_ALLOWED
и
__ IPHONE_OS_VERSION_MIN_REQUIRED
Который должен я использовать для обнаружения старого/нового SDKs, как
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2
__ IPHONE_OS_VERSION_MIN_REQUIRED
установлен на цель развертывания, которая представляет версию, которую пользователь должен минимально запустить для установки вашего приложения. __ IPHONE_OS_VERSION_MAX_ALLOWED
установлен на версию SDK, с которой вы компилируете, хотя это не означает, что ваше приложение не будет работать в более новых версиях, но вы можете использовать его, чтобы проверить, доступны ли некоторые функции ОС.
Например, начиная с iOS 3.2 у нас есть класс UIBezierPath
. Если вы компилируете SDK 3.1 (предположительно, чтобы протестировать его в симуляторе iPhone), этот новый класс недоступен, поэтому компилятор выдаст вам предупреждение о том, что этот класс не существует. Достаточно справедливо, но мы не хотим комментировать этот конкретный код каждый раз, когда мы создаем его для более старого SDK, просто для теста на симуляторе. Мы просто хотим скрыть эти блоки кода, и это стало возможным благодаря этим макросам.
Прочтите эту статью о «Какао с любовью» для дальнейших объяснений, советов и приемов.