【问题标题】:What is an undocumented method and a private API?什么是未记录的方法和私有 API?
【发布时间】:2013-03-31 04:11:57
【问题描述】:

最近我收到了 Apple 的拒绝,因为我使用了私有 API。我不确切知道什么是私有 API 或未记录的方法。有人可以解释一下什么是未记录的方法和私有 API 吗?我真的很困惑……

跟进:

  • 究竟什么是“官方文档”?我可以使用一些由第三方制作的框架和类,例如 Amazon 的吗?

【问题讨论】:

    标签: ios appstore-approval iphone-privateapi


    【解决方案1】:

    有一组功能供 Apple 内部使用,但不向开发人员公开。

    任何此类 API 的使用都将导致 Apple 拒绝该应用程序。

    【讨论】:

    • 谢谢,我想我不能使用这些方法。
    【解决方案2】:

    私有 API 或未记录的方法是不属于官方文档的任何对象或方法。在 Objective C 和其他一些语言中,查找对象支持的方法(消息)列表以及框架下的对象相对容易。 (例如,只需进入调试器并查看视图层次结构。您可能会看到文档中不存在的几个视图对象。)有时您甚至会在 Web 上看到有关如何使用这些方法和对象的说明.

    想到的一个例子是-UIWindow _autolayoutTrace,我在调试自动布局时一直使用它,但它没有记录在案,前导下划线暗示你不应该使用它。这对于调试来说很好,但是如果我发布了使用该方法的代码,它肯定会被拒绝。

    但作为 App Store 审核流程的一部分,Apple 会专门扫描这些未记录的方法,并拒绝使用这些方法的应用。这是因为 Apple 可能会随时更改这些未记录的方法的工作方式。如果您的应用依赖于这些隐藏的类或方法之一,那么当 Apple 发布改变此行为的新版 SDK 时,您的应用可能会中断。

    【讨论】:

    • 首先感谢您的回复,但现在我有一个疑问:“官方文档”到底是什么?我可以使用一些第三方制作的框架和类,比如亚马逊的吗?
    • 任何第三方库都必须遵守相同的规则。如果一个库/框架使用了未记录的 API,这将导致任何使用这些框架的应用程序被拒绝。当然,这会使这些框架变得毫无用处(有一些极端情况例外),因此您可以相当肯定任何主要框架都会很快解决这个问题。 (有关这方面的一些示例,请参阅侧栏中的一些相关问题,特别是 Three20)
    猜你喜欢
    • 2011-03-07
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多