2009-09-23 4 views
1

У меня есть iphone с os ver. 2.0 я читал, что для магазина приложений все приложение должно быть запущено 3.0 os.so, как я могу заставить мое приложение работать в обоих прошивках. Есть ли способ, который я могу определить, если os ver.> 3.0, тогда запустите разные статусы alse run statments для более низких чем 3.0 os.currently я использую это.Как запустить приложение iphone 2.0 в iphone os 2.0, а также 3.0 и выше os

#if __IPHONE_3_0 
cell.textLabel.text=cellValue; 
[cell.textLabel setFont:[UIFont systemFontOfSize:15.0]]; 
[cell.textLabel setLineBreakMode:UILineBreakModeTailTruncation]; 
#else 
cell.text=cellValue;  
[cell setFont:[UIFont systemFontOfSize:15.0]]; 
[cell setLineBreakMode:UILineBreakModeTailTruncation]; 
#endif 

он будет работать как на прошивке

я хочу, чтобы мое приложение будет работать на> = 3.0 зева и ниже, чем это ... пожалуйста, помогите мне

как я проверить мой приложение для устаревших методов ... я могу видеть эту строку только как устаревшую cell.text = cellValue;

есть что-нибудь, чтобы change.i установили новый SDK под названием iphone_sdk_3.0__leopard__9m2736__final.dmg

ответ

1

Ваш код, указанный выше, не будет работать на обоих наборах ОС. Когда вы используете инструкции #if, вы в основном исключаете код для одной версии ОС для этой конкретной сборки. Другими словами, каждая версия, которую вы создаете, когда вы определяете __IPHONE_3_0 и один, когда вы этого не сделаете, будет исключать код для другого.

Что вы делаете, это создание двух исполняемых файлов, построенных для __IPHONE_3_0, а другое для! __IPHONE_3_0.

Если вы хотите построить один исполняемый файл, то есть одно приложение, которое работает на обоих, то вам необходимо заменить операторы #if с времени выполнения МФС, не скомпилирован #ifs, как:

if (theOS >= kiPhone3) 
    .... 
else 
    .... 

Вы также можете ссылаться в библиотеках только с 3.0, но проверяйте наличие фреймворка во время выполнения, а затем пропустите вызов, если методы недоступны. Есть разные вызовы вам нужно использовать, один для проверки, чтобы увидеть, если метод доступен, и один для если класс доступен:

Class newClass = (NSClassFromString(@"NewClassName")); 
    if (newClass != nil) 

Последняя вещь, есть более поздняя версия SDK, чем тот, который вы упомянули.

Удачи вам!

+0

Я использую это float version = [[[UIDevice currentDevice] systemVersion] floatValue]; если (версия> = 3,0) { cell.textLabel.text = [self.FriendName objectAtIndex: indexPath.row]; // iPhone 3.0 код здесь } еще { cell.text = [self.FriendName objectAtIndex : indexPath.row]; // код iPhone 2.0 здесь } , но это не удалось, когда сборка для ошибки 2.0..giving в этой строке cell.textLabel.text = [self.FriendName objectAtIndex: indexPath.row]; запрос для члена «textlabel» в чем-то, что не является структурой или соединением –

+0

Я просто хочу запускать свое приложение либо на 2.0, либо выше, либо на 3.0, либо выше .. только один исполняемый файл –

+0

Не создавайте для 2.0 больше. Вам нужен один исполняемый файл, поэтому вы один раз создаете SDK 3.0 в SDK Project Base (и активном SDK). – mahboudz

1

Там был similar post некоторое время назад. Взгляните на образец Apple MailComposer, чтобы увидеть пример приложения, поддерживающего как прошивку 3.0, так и 2.x.

+0

Я хочу работать на большем или равном 3.0 и ниже 3.0 –

+0

Я не включил фреймворк, который доступен только в 3.0 –

+0

Я просто хочу быть уверенным, что мое приложение 2.0 будет работать с 3.0 или выше. –

0

Если вы построите его на SDK 2.0 (или 2.1, или 2.2.1 и т. Д.), Он запустится на этом SDK и любой более поздней версии, если Apple не прекратит поддержку этого SDK. Я вижу множество приложений в App Store, которые говорят, что они работают с iPhone OS 2.x или более поздней версией, и они отлично работают на моем iPhone 3G, работающем под управлением 3.1.

0

Директивы if-else скроют одну часть кода от компилятора, чтобы он не работал на обоих программах.

Смежные вопросы