什么是未记录的方法和私有API?

VIC*_*GS3 1 iphone-privateapi appstore-approval ios

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

跟进:

  • 什么是"官方文件"?我可以使用亚马逊之类的三分之一的框架和类吗?

Dav*_*ren 10

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

想到的一个例子是-UIWindow _autolayoutTrace,我在调试autolayout时一直使用它,但它没有记录,前导下划线是一个你不应该使用它的提示.这对于调试很好,但是如果我发送了使用该方法的代码,那肯定会被拒绝.

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

  • 任何第三方图书馆都必须遵守相同的规则.如果库/框架使用未记录的API,则会导致使用这些框架的任何应用程序被拒绝.当然,这会使这些框架无用(有一些边缘情况例外),所以你可以相当肯定任何主要框架都会很快解决这个问题.(有关此示例的一些示例,请参阅侧栏中的一些相关问题,特别是Three20) (2认同)