现在,它的公共知识应用程序的储存提交的是正在试验使用的私有Api,我要问的问题...到底是什么私人API所以,我可以避免他们吗?

有帮助吗?

解决方案

一个私有API是未在SDK中的API。举例来说,一个框架类可能宣布不打算由外部开发者使用的方法。私有API的行为不能保证。你甚至不能确保该方法将在那里在平台的未来更新。它的声明可能是不公开发布的SDK头文件可用。如果你坚持的东西SDK文档中公开定义,你会好起来的。

其他提示

您会发现很难意外使用私有API。他们不是在SDK文档中记录,并且他们不Xcode的代码完成建议显示出来。

这之所以成为新闻最近是几个应用程序使用的框架的创建者使用私有API,因此当开发商谁包括他的框架更新他们的应用程序,他们被拒绝(即使这些开发商并没有使用专用API,该框架他们添加到他们的应用程序所做的那样)。

这是关于你可能使用私人API偶然的唯一途径。

这不仅仅是私人Api,可能会导致您的申请也被拒绝。使用没有证件的成员的公API可能会导致您的申请也被拒绝。例如,three20库(因为固定的)访问_phase和其他成员UITouch内的一个类别。

他们还可以检测到呼叫 成员通过performSelector,如下面还有标记的一个拒绝:

UIWindow* window = [UIApplication sharedApplication].keyWindow]
return !![window performSelector:@selector(firstResponder)];

更令人不安的是,如果你让你的应用程序下的工作3.1和3.0和在运行时在3.0,你不要用任何的3.1的东西你的应用仍然可以得到拒绝。一个例子可能是 cameraOverlayViewUIImagePickerController (见 在这里,).这是一种令人费解。

通常可以通过不在SDK头。一个苹果的约定是用下划线导致ObjC方法名。

您提交的应用程序是应用程序扫描仪前,一个伟大的工具来使用。它会扫描你的.app文件的私有API的使用,并告诉您什么方法签名匹配起来,这些方法都在哪个班。

链接 - > http://www.chimpstudios.com/appscanner/

我的应用程序是因为使用私有API.Here的拒绝苹果代码,

    Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");

    id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];

    [activeInstance performSelector:@selector(dismissKeyboard)];

这不是难以获得被拒绝通过所谓的"使用私人API"。尝试使用下列作为核心数据属性,它将拒绝:

  • 将colorindex
  • id

它显示了如何在机器人扫描API。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top