Мне нужно поддерживать оба SDK (3.0 и 4.0). Но в 3.0 SDK я получаю ошибку - PullRequest
2 голосов
/ 14 января 2011

Мне нужно поддерживать оба SDK (3.0 и 4.0). Но в 3.0 SDK я получаю сообщение об ошибке.

CGFloat maxScale;

if ( [[UIScreen mainScreen] respondsToSelector: @selector (scale)] == YES )
{
    maxScale = 1.0 / [[UIScreen mainScreen] scale];
}
else 
{
    maxScale = 1.0;
}


warning: 'UIScreen' may not respond to '-scale'
error: invalid operands to binary / (have 'double' and 'id')

Как мне решить эту проблему?

1 Ответ

3 голосов
/ 14 января 2011

Если вы хотите, чтобы ваш код отличался при сборке с разными версиями SDK, вам нужно использовать препроцессор:

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED

     maxScale = 1.0 / [[UIScreen mainScreen] scale];

#else

     maxScale = 1.0;
#endif

Но обычно вам это не нужно, соберите свой проект с последним SDKиметь и установить соответствующее значение для свойства «Цель развертывания iOS» вашей цели.Тогда ваше приложение будет работать на указанных вами версиях SDK, и ваш код выполнит время выполнения , чтобы проверить, присутствует ли метод -scale.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...