2013-07-10 39 views
47

我读过有关这几篇文章,我只是想看看,如果我理解这个正确:私人API究竟是什么,为什么Apple会拒绝iOS应用程序?

如果使用私人API,苹果将拒绝您的应用程序...

  1. 是什么“私人API”和“非私人API?”之间的主要区别?

  2. “非私人”API是否仅提供由Apple提供和验证的API?

  3. API不仅仅是一种与框架进行交互的方式,框架只是一组封装的类/头文件,人们可以将其用于简单的目的?

  4. 这不是说我不能在我的应用程序中重复使用任何人的代码(Apple除外)?

  5. 如果这是真的,只要程序员自己定制类和方法,是不是他在技术上为他的特定目的设计了一个迷你框架?那么这是不是意味着他正在使用他自己的私人API?

  6. 与我的类/方法一起使用别人的类/方法,他们甚至可以区分它们之间的区别,以及为什么会出现这种问题?

我对此的理解听起来很荒谬,不相信我理解什么是“私人API”是正确的。我确实读过它是为了防止可能导致您的应用程序失效的API中的任何更改。这是否意味着API在运行期间被链接(与编译时间相对),并且可以在您不知道或自动更新的情况下自动更新? (请参阅我原本以为API /框架在编译时被设置为石头,也许这是我错的地方)

有人可以帮我吗?我对这项政策非常困惑。谢谢!

+0

顾名思义,你自己的类和你自己的应用程序中的东西都是你自己的,而且是私有的。它们表示私有API,如使用iOS提供的功能仅供内部使用。例如作为一个黑客入侵的例子,您可以使用SystemClock api,它在引擎盖下使用私有的HardwareClock API。使用SystemClock的应用程序可以。但绕过并直接进入HardwareClock将启动您的应用程序。 –

+1

Apple的私有API规则是关于不使用私有Apple API的。苹果已经记录了他们的许多API,但有些没有记录。这些未公开的API是Apple准则所指的私有API。 – cjc343

+0

[Apple and private APIs]的可能重复(http://stackoverflow.com/questions/1773615/apple-and-private-apis) – Barmar

回答

37

问:“私人API”和“非私人API?”之间的主要区别是什么?

  • 私人是没有公开定义一个(没有太多吧)

问:是“非私营”的API只提供的API并通过Apple验证?

  • 私人和公共的API都是由苹果公司提供的',但只提供公共API供您使用。
  • 私人API是使用由苹果只

问:不是API只是一个框架交互方式,以及框架只是一组封装类/头的那人们可以用于微不足道的目的?

问:这是不是意味着,我不能在所有的人重用的代码(比苹果其他)在我的应用程序?

  • 没有

问:如果这是真的,每当一个程序员,使他或她自己的自定义类和方法,是不是他在技术上设计一个迷你框架只是他的具体目的?那么这是不是意味着他正在使用他自己的私人API?

  • 没有(一个框架,不同的是一个应用程序)

问:什么,甚至是使用别人的类/方法旁边我的类/方法,怎样的区别他们甚至可以说出不同之处吗?为什么这会成为一个问题?

  • 它通常不会

需要指出的一点是,指你应该只考虑私人苹果私有API时提供的API。
来自第三方的其他API是不同的(只要该第三方代码不使用Apple私有API,Apple就不在意)。

+0

我gotcha。我觉得有很多关于私人API的误导性信息,我读过这些信息,很难理解,因为有些人说这是一回事,有些人说这是另一回事。我认为苹果关于私有API的信息是它们是“无证API”,它并不完全解释“无证”的含义。感谢您清理它! – giant91

+0

@你能否举一个例子来说明私人api是什么或者看起来像什么? –

+0

@SamBudda,让我们一起使用'UIDevice uniqueIdentifier',它曾经是公开的,但现在是私有的。您曾经可以使用它来识别您的应用程序正在运行的设备,但尝试识别用户可能是可以使用的,所以现在它是私人的,并且有许多针对不同用途的更具体的替代方案。所以,私人API不会特别“看”任何东西。 – Wain