Последняя версия Reachability.m (пример кода версии 2.2), совместимая с iOS 3.0?

Кто-нибудь знает, будет ли версия 2.2 (последняя) примера кода Apple iOS «Доступность» работать на iOS 3.0? Я хочу поддерживать iOS 3.0, а Reachability.h и .m — это первый нефреймворковый код, который я использую в своем приложении. В моем собственном коде я обычно читаю документы для всех методов, которые я использую, и использую responsesToSelector: для реализации методов, которые не будут работать в 3.0. Когда люди используют сторонний код, как они подтверждают, какую iOS он поддерживает, не проверяя каждый метод отдельно по документации?

В качестве альтернативы, кто-нибудь знает, как я могу получить старую версию кода примера? (Доступность версии 2.1 может помочь.)


person MattyG    schedule 31.03.2011    source источник
comment
Я успешно использовал Reachability на iOS 3.1 до Xcode 4. Он не работал в Xcode 4, но, вероятно, это проблема генерации кода. Однако я не знаю iOS 3.0; Я бы посоветовал вам просто попробовать. Тем не менее, Reachability — это один из самых уродливых кодов, которые я видел в iOS, а основные фреймворки, которые он вызывает, довольно просты в использовании. Скопируйте большой ЕСЛИ, и вы почти закончили.   -  person Steven Fisher    schedule 31.03.2011
comment
Недавно мне пришлось использовать достижимость для приложения Mac, работающего под управлением последней версии OSX, и я прошел через все достижимости, чтобы выбрать то, что мне было нужно. Это не сложная задача.   -  person David    schedule 31.03.2011
comment
Спасибо за ваши предложения, ребята. Я просмотрел пример кода Reachability и его методы, но он был довольно запутанным и излишним для того, чего я пытался достичь. В итоге я использовал NSURLConnection, чтобы просто попытаться подключиться к хосту, а затем прослушал обратные вызовы для загрузки или сбоя страницы.   -  person MattyG    schedule 04.04.2011
comment
Используя NSURLConnection, я также смог продолжить поддержку iOS 3.0 =).   -  person MattyG    schedule 04.04.2011
comment
Я использую класс доступности из blog.ddg.com/?p=24, который является улучшенной версией реализации Apple с большим количеством функций.   -  person Martin Wickman    schedule 12.04.2011
comment
@Matt & @Martib, не могли бы вы оставить свои комментарии в разделе Ваш ответ. Потому что ваши комментарии являются законным ответом. Таким образом, мы можем проголосовать и закрыть этот вопрос. Спасибо.   -  person Black Frog    schedule 16.04.2011


Ответы (1)


Я не хочу вырезать ответ у @Matt и @Martin, но я чувствую, что этот вопрос заслуживает ответа для потомков. Если они вернутся и опубликуют свои комментарии в качестве ответов, пожалуйста, не стесняйтесь их принимать.

В любом случае, мой собственный ответ заключается в том, что я бы настоятельно не рекомендовал бы использовать примеры проектов Apple непосредственно в рабочем приложении, особенно Reachability. Многие их примеры плохо написаны и, как вы заметили, устарели. Я подал много ошибок против них без особых результатов.

Тем не менее, еще один момент заключается в том, что вам действительно следует дважды подумать, прежде чем полагаться на Reachability для логики управления. Если вы просто хотите уведомить пользователя, когда его соединение изменится или что-то в этом роде, хорошо. Но не полагайтесь на то, что говорит Reachability, чтобы решить, стоит ли пытаться общаться с сетью или нет. Это часто неправильно о вашем сетевом статусе. Просто откройте соединение, и если оно будет успешным, в противном случае вы получите ответ об ошибке, сообщающий, что соединения нет.

РЕДАКТИРОВАТЬ. Что касается вашего другого вопроса о том, как узнать, какую IOS поддерживает стороннее приложение. Ответ таков: если они не задокументировали это, вы не сможете этого сделать. Наилучшим индикатором обычно является просмотр настроек «Базовый SDK» и «Цель развертывания iOS» цели сборки. Базовый SDK будет последней версией iOS, для которой они создали, а Целевой объект развертывания будет самой ранней версией iOS, которую они поддерживают.

Ваше здоровье

person DougW    schedule 18.04.2011
comment
Спасибо за ответы Дуг. Я отказался от Reachability в пользу решения NSURLConnection методом проб и ошибок. Гораздо понятнее, и мне не пришлось использовать запутанный пример кода Reachability. - person MattyG; 19.04.2011
comment
@Matt - Круто, рад это слышать. Это определенно лучший подход. - person DougW; 19.04.2011
comment
Просто хотел отметить, что не поставляйте с Reachability и будьте осторожны с примерами кода проекта. FWIW, мне удалось заставить Reachability работать в новом проекте, прежде чем я понял, что мне не нужно делать это так, как Apple (новичок, c'est moi). Это было очевидно даже для меня неэлегантным и трудным для понимания. - person Mark; 18.09.2012