【问题标题】:Iphone - deprecated funcions... will they crash the iphone?Iphone - 不推荐使用的功能......他们会让iphone崩溃吗?
【发布时间】:2010-03-05 01:49:43
【问题描述】:

我正在处理为 iPhone OS 2.0 设计的旧代码。在这段代码中,我有一些我们在 iPhone 3.0 上弃用的说明。

我不愿意更改版本,因为我有很多客户,尤其是 iPod Touch,他们仍在使用 2.0。如果我更新说明,他们将无法继续接收更新。

应用程序是为 2.0 编译的,并且一直都是这样。

我已为 Apple 提交了一个新版本,其中修正了一些错误并添加了新功能。我一直将此应用程序发送给苹果,他们从未抱怨过。现在他们拒绝了告诉我它在 OS 3.1.3 下崩溃的应用程序。

我已按照他们的说明进行操作,但没有看到任何崩溃,并且使用“已弃用”功能的代码部分在 3.1.3 上完美运行。

为 3.1.3 编译项目时,我在 Xcode 上看到一条黄色警告,告诉我一条指令在 3.1.3 上已弃用。

最大的问题是:这条指令是否适用于 3.1.3,我应该忽略这个警告吗? 这会让 iPhone 崩溃吗?

在我看来,所有新版本的 iPhone OS 都保持与旧版本的兼容性,因此,我认为,为 2.0 编译的任何应用程序都将在 3.1.3 和所有版本上运行。

如您所见,我已经在 3.1.3 上对此进行了测试,并且该应用程序运行良好。

怎么可能?有什么想法吗?

感谢您的帮助。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 ipad


    【解决方案1】:

    不推荐使用的调用旨在在它们已被弃用的操作系统版本中工作,但在某些(未定义的)未来操作系统中停止工作。弃用是对开发人员的警告:嘿,你应该改变你的代码,这将在未来打破。这是一种在不破坏所有人的情况下更新 API 库的方法。

    总而言之,您现在可以使用这些调用,但如果您决定放弃 2.x 可操作性,则需要编辑代码。

    【讨论】:

    • 谢谢。是否可以设计一种测试来查看哪个版本正在运行并执行替代更新指令,以防操作系统 >= 不推荐使用的版本?那怎么办?
    • if ([object respondsToSelector:@selector(newMethod)]){[object newMethod];} else{[object deprecatedMethod];}
    • 等等,这种方法有问题。如果我为 2.0 编译,它将无法编译,因为新调用不适用于该版本!
    • 您可以按照本问题中讨论的过程和示例使用 3.0 进行编译,但目标为 2.x:stackoverflow.com/questions/986589/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多