обнаружение и предотвращение сбоев на старых iOS (Suspecting EventKit) - PullRequest
0 голосов
/ 18 января 2011

Дорогие ученые. Я создал простое приложение с использованием новейшего SDK (4.2.1), которое работает без сбоев и ошибок на всех устройствах с iOS 4.x.x.

В последнее время я получаю комментарии от пользователей со старой версией iOS, жалующихся на сбой приложения при запуске, в журнале сбоев Apple я ничего не вижу. Продвигая мое расследование, единственное подозрение, которое у меня есть на данный момент, - это использование класса EventKit, который, если память не изменяет, введен только после iOS4.

Я использую его очень легко в одном из моих классов, и он отлично работает на iOS4.2.1

#import <EventKit/EventKit.h>

// через некоторое время

[self setADateInCal: [MyTimeArray objectAtIndex:0] :formatterDate];   

Таким образом, мои вопросы:

  1. Может ли это быть проблемой, которая приводит к сбою моего приложения на iOS <4? </p>

  2. Как можно предотвратить это, не отключив функцию для людей с iOS4

  3. В общем, как это проверить? У меня последняя официальная iOS на моем устройстве и SDK, симулятор ограничен тем, насколько он может вернуться при обновлении до версии iOS ... каким-нибудь волшебным способом сделать это?

Ответы [ 2 ]

1 голос
/ 18 января 2011

1.) Да.Если его не было в API в <4.0, произойдет сбой любого, не работающего> 4.0.

2.) Проверьте, доступен ли класс с использованием NSClassFromString (Google для примеров) и откликается на ответную реакцию, чтобы увидетьесли нужный метод доступен для использования в версии ОС, на которой работает клиент.Возможно, вам также потребуется слабая ссылка на среду EventKit (опять же, Google, чтобы узнать, как это сделать).

3.) Единственный реальный способ проверить это - сохранить устройство в той ОС, которую вы хотите протестировать.Лично у меня есть старый iPhone, который я никогда не обновляю под управлением 3.1.3 для таких вещей.Кроме того, вы можете сохранить старые установки xcode + iOSSDK на разных разделах или что-то еще и использовать их симулятор.(для будущих обновлений я думаю, так как вы, очевидно, не сделали этого для <4.0).Но нет, нет волшебного способа сделать это.извините. </p>

для ясности отредактируйте номер 2. В основном вы будете проверять, доступен ли требуемый класс / метод в той версии ОС, которую вы используете в данный момент, если вы можете использовать ее, если не выпридется искать обходной путь (полностью опустить или сделать это другим способом, который совместим со старыми версиями).

0 голосов
/ 18 января 2011

Да, это может быть причиной аварии. Проблемы с отсутствующими библиотеками ничего не сообщают в журнале аварий Apple.

Чтобы этого не случилось, нужно сделать две вещи,

Слабая ссылка библиотеки комплектов событий в xcode.

Проверьте на наличие в вашем коде что-то вроде

   if(!NSClassFromString(@"EKEventKit")){
       //do stuff with event kit
     }

Единственный способ протестировать актуальную версию iOS - получить физическое устройство с ios <4. </p>

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