Должен ли я продолжать использовать обходные пути xCode 4.2, iPhone 3.1.3 для выявления проблем с производительностью? - PullRequest
1 голос
/ 06 февраля 2012

Я пишу в xCode 4.2 с использованием последних SDK, но я хочу провести тестирование на старом устройстве iPhone 2G (3.1.3 iOS). Цель этого - получить более высокую метрику производительности. В конечном счете, я понимаю, что appStore может больше не принимать приложения 3.x. Но выполнение медленного теста, как это может помочь:

  1. подтянуть петли, чтобы ускорить процесс
  2. сделать код более эффективным путем определения хороших мест для многопоточности
  3. (, что наиболее важно ) сокращает время загрузки, например трюки Default.png и диалоги загрузки

Мой вопрос, я должен:

  • Забудьте об этом, это слишком сложно со всеми проблемами кросс-совместимости между iOS 4.x и iOS 3.x. Лучше просто «масштабировать временные метки NSLog» на iPhone 3G (4.2 iOS) вместо iPhone 2G (3.1.3 iOS).
  • Продолжайте, просто используйте обратно совместимый код и обходные пути.
  • Учитывайте это только в том случае, если вы не планируете использовать: _ __ _ __ классов (что они из вашего опыта?)

Я какое-то время играл с этим: вот что я натолкнулся на это:

  1. В xCode 4.2 вам необходимо добавить «armv6» во все статические библиотеки и проекты приложений, используя «+» в «Project-> Settings-> Architectures», убедитесь, что вы не удалили «$ (ARCHS_STANDARD_32_BIT»).

  2. У меня есть определенный код времени выполнения, добавлены проверки:

    NSDate *now = [NSDate date];
    if ([now respondsToSelector:@selector(dateByAddingTimeInterval:)])
    {
       //iOS 4.0
    }
    else 
    {
       //iOS 3.1.3
    }
    
  3. Может также делать флаги прекомпилятора:

    #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_1
    #else
    #endif
    
  4. Также можно динамически проверять версию:

    float version = [[UIDevice currentDevice].systemVersion floatValue];
    if (version > 3.1.3)
    {
        //do stuff
    }
    

Это много дополнительной работы. Кто-нибудь есть совет по этому поводу? Есть ли способ лучше? Есть ли список, аналогичный приведенному выше DO и DONT для этого? Что сработало для вас и сэкономило вам больше времени / денег?

...