Как заставить мой iOS4.2 SDK разработанный код работать с iOS3.1.3? - PullRequest
1 голос
/ 05 июля 2011

Я новичок в разработке для iPhone.Я начал разработку проекта с использованием iOS4.2 SDK.Он работает как на устройстве iOS4.2, так и на симуляторе.Позже я понял, что мое приложение не работает на устройствах с iOS3.1.3.Чтобы решить эту проблему, я обновил «Цель развертывания» в файле конфигурации моего приложения до «3.1.3».

Проблема, с которой я столкнулся, заключается в том, что я использую UITapGestureRecognizer в некоторых из моих классов.При компиляции моего кода с помощью iOS 3.1.3 SDK я получаю следующие ошибки:

ошибка: «UITapGestureRecognizer» не объявлен (первое использование в этой функции)

ошибка: 'tap' undeclared (первое использование в этой функции)

Из того, что у меня есть, похоже, это потому, что iOS. 1.3 не поддерживает UITapGestureRecognizer, поэтому для запуска я внес следующие изменениявезде, где я использую UITapGestureRecognizer:

Class mailClass = (NSClassFromString(@"UITapGestureRecognizer"));
if(mailClass != nil)
{
 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(findOutTheTagmap:)];
 [imageView addGestureRecognizer:tap];
 [tap release];
}

Я также обновлял свою конфигурацию Target и устанавливал для UIKit Framework значение «Weak».Кроме того, я также внес следующие изменения: Базовый SDK: 3.1.3 Версия компилятора: GCC4.2 (также пробовал с GCC4.0) Цель развертывания Mac OS X: Компилятор по умолчанию (также пробовал с 10.4 и 10.6) Цель развертывания iOS: 3.1.3

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

Я перепробовал почти все, что нашел на форумах.

У кого-нибудь есть идеи о том, как я могупродолжить?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Базовый SDK - это версия SDK, используемая для компиляции вашего приложения.Вы должны убедиться, что установлена ​​версия, которая имеет все функции, которые вы используете.UIGestureRecognizer требует 3.2 или более поздней версии, поэтому вы должны установить Base SDK 3.2 или более поздней версии.И на самом деле 3.2 был только iPad;если ваше приложение для iPhone, вам нужно установить Base SDK на 4.0 или более позднюю версию.3.1.3 для цели развертывания является правильным.Проверьте свой код, чтобы убедиться, что нет других используемых вами классов, которые недоступны в 3.1.3 (см. Документы).

У Мэтта Галлахера есть отличная статья на эту тему, которую я очень рекомендую, здесь .Пока вы там, прочитайте весь его блог , это здорово.:)

0 голосов
/ 05 июля 2011

Установка другого SDK, как вы сделали, может быть полезна для получения серьезных ошибок о том, что вы не можете использовать, но, как вы видите, это трудно или невозможно (в зависимости от класса) обойти.

Вместо этого вы всегда должны использовать новейший SDK. (На самом деле, в более новых версиях Xcode есть «последний» параметр, который вы должны использовать.) Задайте для цели развертывания iOS (IPHONEOS_DEPLOYMENT_TARGET) минимальную версию.

...