7

我正在更新我的一个应用程序,但我遇到了一个难题:

在我想添加 iOS 4 独特功能的地方,我别无选择,只能为支持的设备实现它们——这里没有两难选择。

困境是当我有两种方法可以达到相同的效果时,一种是“旧方式”,一种是“新方式”。一个很好的例子是使用动画块,我可以使用这种语法:

[UIView animateWithDuration:2 animations:^{
     self.segmentedControl.alpha=0;
 }];

仅在 iOS 4.0 中受支持。或者使用包括4在内的所有版本都支持的旧方式。(还有很多其他类似的例子。)

你做什么,为什么?

这些块真的很棒,但如果我想支持以前的版本,我将不得不编写更多代码?在那种情况下使用它们我能得到什么?

4

4 回答 4

9

通常,规则是支持提供使您能够交付所需产品的功能的最低版本的操作系统。在 iPhone OS 3.0 发布大约一个月后,我让我的所有应用程序都需要 iPhone OS 3.0,因为我需要支持自定义复制和粘贴,以及应用程序内电子邮件。对于我的一个应用程序的免费版本,我想试用 iAds,所以我只制作了 4.0。

新操作系统提供的内部代码改进的可能性在制定规则时有点棘手。正如 Joe 指出的那样,您花在与旧的做事方式作斗争上的时间(可以通过迁移到新的操作系统版本来节省)是您不修复错误或添加下一个伟大的新功能的时间。在某些时候,一种新的做事方式(如块和 GCD)的优雅令人无法忽视,即使它可能不会直接向您的应用程序添加任何新功能。

在 Mac 上,许多开发人员保持对当前版本的操作系统以及 Apple 发布的前一个版本(此时为 Snow Leopard 和 Leopard)的支持。只有当一个新的操作系统出现时,他们才会放弃对以前的落后版本的支持。其他人,如 Wil Shipley,主张立即完全使用新操作系统并忽略旧版本。这里的论点是,不会为 Apple 的新操作系统版本付费或不保持系统更新的人购买您的第三方应用程序的可能性要小得多。

我在 iOS 上也看到了这一点。例如,我在 3.0 发布前后对针对不同版本的广告进行了测试(当时 iPod touch 用户仍然需要为他们的操作系统更新付费)。虽然我的应用程序免费版本的下载在 2.x 和 3.x 用户之间相对一致,但几乎没有 2.x 用户为应用程序付费,而 3.x 用户付费。

在我的付费用户中没有人抱怨过早迁移到 3.0(不过,他们确实对新功能说得很好),只有两个人抱怨我的免费版本只支持 4.0,相比之下,56,000 人已经升级没有问题。虽然我会给过渡期一点时间,但我相信在新操作系统版本发布后相对较快地迁移到它们。现在,我正在将我的所有东西都制作成 4.0-only,以便我可以对代码库进行现代化改造。

最后,您从使用新的操作系统版本中获得的最后一个好处是,您对 Apple 更具吸引力,Apple 总是希望在其新设备和操作系统版本中使用新功能来推广应用程序。

于 2011-01-08T15:34:47.307 回答
2

你开发这个应用程序的目标是什么?

如果是收入(或来自高下载次数的名声),那么请查看额外细分市场的规模和购买力与开发(以及测试、质量保证和支持)成本。

旧设备所有者和旧操作系统用户是 (1) 少数(查看分析以了解当前数量,大约 10% 或更少并且正在下降),并且 (2) 他们平均购买的应用程序比拥有最新版本的人少得多设备和操作系统版本。对于非大片应用程序,可能不值得额外的一小部分潜在下载量来支持这些客户所需的额外设备测试和 QA 时间,更不用说开发工作了。

如果您正在为慈善或学习制作应用程序,那么请继续将您的时间贡献给喜欢旧设备新应用程序的 1 个人(或其他少数人)。如果您想在大多数用户升级他们设备的操作系统以匹配之前几周,在最新的操作系统版本中立即使用一些超级新功能,那么这是一项很好的技能。

于 2011-01-08T16:09:38.797 回答
1

如果你想通过销售软件赚钱,那么无论如何你应该支持尽可能多的操作系统版本,最简单的方法是编写一段可以在所有版本上运行的代码——因此,使用旧样式的动画块。

于 2011-01-08T12:56:18.237 回答
0

使用新的动画方式,您可以使用块来完成,而不必创建单独的方法,如果您有多个动画需要在完成时执行某些操作,它会更干净。它也更容易阅读,因为它没有那么分散。肯定会有一些技术优势,但我不知道那方面的事情。

于 2011-01-08T12:42:29.480 回答