3

OSX 具有 iOS SDK 中不可用的功能,偶尔我会找到这样的答案:iPhone SDK 上没有 route.h,上面写着“只需从 Simulator(或 OSX)SDK 复制头文件就可以了”会好好工作的。”

对我来说,这在多个层面上都令人怀疑,包括 App Store 的批准,但后来我从一位 Apple 员工那里读到了类似的内容,他说“如果你在 iOS 上为 App Store 应用程序使用 sys/route.h 声明,请进入与我接触……”,这听起来像是默认的认可(或者是捕捉不当行为的诡计:)

任何人都知道官方线路的真正位置,以及这样的事情在生产代码中是否完全安全?我对较低级别的 BSD 函数和诸如可移植性之类的东西特别感兴趣,而不是未记录的 Objective-C 方法。

4

2 回答 2

3

我不会将苹果论坛上的评论视为默许。听起来他们只是想决定是否应该添加一些额外的 BSD API 以在 iOS 应用程序中使用。

一般来说,如果一个函数没有可用的iOS标头,那么它被认为是私有 API(例如,在 下的东西https://developer.apple.com/library/ios/)。私有 API 的官方政策是它们不得用于通过 App Store 分发的应用程序。

现在,您当然可以将它们用于个人/爱好应用程序,或您在内部部署的应用程序(企业分发)。

如果您正在谈论的 API 是针对OS X公开记录的 API ,并且您可以通过复制标头使它们在 iOS 上工作,那么它们可能是 Darwin 源代码库的一部分。它们很可能会在未来的 iOS 版本中继续运行,尽管不能保证。当然,什么都不能保证(真的),因为公共 API 也被弃用了。

然后,问题是并非所有审查检查都是自动化的(我不为 Apple 工作,但可以从我看到的通过审查的事情中推断出这一点)。应用程序通过私有 API 使用获得批准并不少见,尽管如果它们变得流行,Apple 经常会在几周内从商店中下架这些应用程序。审查过程并不完美。

所以,我的回答是,如果你要提交到应用商店,不要指望复制标题会起作用。

PS如果您能具体告诉我们您指的是哪个BSD功能,我们也许可以给您一个更好的答案。

PPS 您链接到的有关 Route.h 的答案来自 Grant Paul,他编写了相当多的非 App Store 软件。

有关私有 API 和 App Store 的其他有用信息

于 2013-05-30T00:01:15.893 回答
1

Apple 永远不知道您使用什么头文件 - 当然危险是复制文件中的定义接近但不完全是 iOS 使用的。如果这个文件很重要,或者一些选定的文件,在 Apple 的内部论坛上发布一个问题,你肯定会得到这样一个问题的答案。做不到这一点,烧掉一个 DTS 事件(你一年得到两个,我几乎从不使用我的)。

于 2013-05-29T23:37:19.150 回答