与iOS 3.0兼容的最新Reachability.m(示例代码版本2.2)?
有谁知道苹果的iOS'Reachability'示例代码的2.2版本(最新版本)是否会在iOS 3.0上运行? 我想支持iOS 3.0,而Reachability.h和.m是我在我的应用程序中使用的第一个非框架代码。在我自己的代码中,我通常阅读我使用的所有方法的文档,并使用respondsToSelector:实现不会在3.0上运行的方法。 当人们使用第三方代码时,他们如何确认它支持的是哪种iOS,而无需针对文档分别检查每种方法?与iOS 3.0兼容的最新Reachability.m(示例代码版本2.2)?
另外,有没有人知道我可以如何让我的手在示例代码的旧版本? (可达性版本2.1可能会有所帮助。)
我并不是想狙击@Matt和@Martin的答案,但我觉得这个问题值得子孙后代回答。如果他们回来发表评论作为答案,请随时接受。
无论如何,我自己的回答是,我会高度建议不要直接在生产应用程序中使用Apple示例项目,特别是Reachability。他们的许多例子都写得很糟糕,正如你注意到的那样,过时了。我已经提交了很多错误,但没有很多结果。
也就是说,另外一点是,您应该真正考虑依靠Reachability来控制逻辑。如果你只是想在用户连接改变时通知用户,好吧。但不要依赖Reachability所说的来决定是否尝试与网络进行通信。您的网络状态往往是错误的。只要打开一个连接,如果它成功了,否则你会得到一个错误的回应,让你知道没有联系。
编辑 - 关于如何知道第三方应用程序支持的IOS的其他问题。答案是,除非他们已经记录下来,否则你可能无法做到。最佳指标通常是查看构建目标的“基础SDK”和“iOS部署目标”设置。 Base SDK将是他们针对的最新iOS版本,Deployment Target将是他们支持的最早的iOS版本。
干杯
感谢Doug的回答。我放弃了有利于NSURLConnection试验和错误解决方案的Reachability。更清楚的是,我不必使用凌乱的Reachability代码示例。 – MattyG 2011-04-19 00:16:08
@Matt - 很酷,很高兴听到它。这绝对是一个更好的方法。 – DougW 2011-04-19 00:51:58
只是希望第二个“不要达到可达性”和“小心样品项目代码”的情绪。FWIW,在我意识到我不需要苹果的方式(新手,c'est moi)之前,我确实设法让一个新项目中的可达性工作。显然,即使对我来说,不雅和难以理解。 – Mark 2012-09-18 16:32:48
我使用可达成功地在iOS 3.1之前的Xcode 4.它失败的Xcode 4下,但是这可能是一个代码生成问题。虽然我不知道iOS 3.0,我建议你试试看。也就是说,Reachability是我在iOS上看到的最丑陋的代码之一,它调用的核心框架非常易于使用。复制大IF然后即将完成。 – 2011-03-31 02:32:12
我最近不得不使用可达性运行最新版本的OSX的Mac应用程序,并通过了所有可达性来拔出我所需的东西。这不是一项艰巨的任务。 – David 2011-03-31 02:35:04
感谢您的建议家伙。我回顾了Reachability示例代码和它的方法,但它有点凌乱,而且我试图实现的东西过于夸张。我结束了使用NSURLConnection来简单地尝试连接到主机,然后监听页面加载或失败的回调。 – MattyG 2011-04-04 02:58:30