【问题标题】:Latest Reachability.m (Example code version 2.2) compatible with iOS 3.0?与 iOS 3.0 兼容的最新 Reachability.m(示例代码版本 2.2)?
【发布时间】:2011-03-31 02:29:55
【问题描述】:

有谁知道 Apple 的 iOS 'Reachability' 示例代码的 2.2 版(最新)是否可以在 iOS 3.0 上运行? 我想支持 iOS 3.0,Reachability.h 和 .m 是我在我的应用程序中使用的第一个非框架代码。在我自己的代码中,我通常阅读我使用的所有方法的文档,并使用 respondsToSelector: 来实现不会在 3.0 上运行的方法。 当人们使用第三方代码时,他们如何在不单独检查文档的情况下确认它支持哪个 iOS?

或者,有谁知道我如何获得旧版本的示例代码? (可达性 2.1 版可能会有所帮助。)

【问题讨论】:

  • 在 Xcode 4 之前,我在 iOS 3.1 上成功使用了 Reachability。在 Xcode 4 下它失败了,但这可能是代码生成问题。不过,我不知道 iOS 3.0;我建议你试试看。也就是说,Reachability 是我在 iOS 上见过的最难看的代码,它调用的核心框架非常易于使用。复制大 IF,你就差不多完成了。
  • 我最近不得不为运行最新版本 OSX 的 Mac 应用程序使用可达性,并通过所有可达性来挑选出我需要的东西。这不是一项艰巨的任务。
  • 谢谢你们的建议。我查看了 Reachability 示例代码及其方法,但它有点凌乱,并且对于我想要实现的目标来说太过分了。我最终使用 NSURLConnection 简单地尝试连接到主机,然后监听页面加载或失败的回调。
  • 使用 NSURLConnection 我也能够继续支持 iOS 3.0 =)。
  • 我正在使用来自blog.ddg.com/?p=24 的可达性类,它是Apples 实现的改进版本,具有更多功能。

标签: iphone cocoa-touch networking reachability ios3.0


【解决方案1】:

我并不是要狙击@Matt 和@Martin 的答案,但我觉得这个问题值得后人回答。如果他们回来并发布他们的 cmets 作为答案,请随时接受。

无论如何,我自己的回答是,我强烈建议不要在生产应用程序中直接使用 Apple 示例项目,尤其是 Reachability。他们的许多示例都写得很糟糕,而且正如您所注意到的,它们已经过时了。我已经针对他们提出了很多错误,但没有很多结果。

也就是说,另外一点是,您应该三思而后行是否依赖 Reachability 进行控制逻辑。如果您只想在用户的连接发生变化或其他情况时通知用户,可以。但是不要依赖 Reachability 所说的来决定是否尝试与网络通信。您的网络状态通常是错误的。只要打开一个连接,如果成功就很好,否则你会得到一个错误响应,让你知道没有连接。

编辑 - 关于您关于如何判断第三方应用支持的 IOS 的其他问题。答案是,除非他们记录在案,否则您可能无法做到。最好的指标通常是查看构建目标的“Base SDK”和“iOS 部署目标”设置。 Base SDK 将是他们构建的最新 iOS 版本,而 Deployment Target 将是他们支持的最早 iOS 版本。

干杯

【讨论】:

  • 感谢道格的回答。我放弃了可达性,转而使用 NSURLConnection 试错解决方案。更清晰,我不必使用凌乱的可达性代码示例。
  • @Matt - 很酷,很高兴听到它。这绝对是一种更好的方法。
  • 只是想支持“不要发布可达性”和“小心使用示例项目代码”的情绪。 FWIW,在我意识到我不需要按照 Apple 的方式(新手,c'est moi)之前,我确实设法让 Reachability 在一个新项目中工作。对我来说,这显然是不雅且难以理解的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
相关资源
最近更新 更多