Ios 当API公开时,应用程序仍然会因为使用它而被拒绝吗?

Ios 当API公开时,应用程序仍然会因为使用它而被拒绝吗?,ios,Ios,我和一位同事正在就苹果如何对待使用以前私有API的应用程序进行辩论。想象一下,如果您将[NSAppleObject someMethod],其中someMethod在iOS 7.1中是一个私有的、未记录的方法,但在iOS 8.2中它被公开了。该应用程序支持iOS 7.1以上版本 我想使用respondsToSelector检查someMethod的可用性,如果可用,请使用它。我的同事争辩说,因为这个方法在7.1中是私有的,我们的应用程序支持7.1,所以苹果将拒绝使用它,即使API现在是公开的 就

我和一位同事正在就苹果如何对待使用以前私有API的应用程序进行辩论。想象一下,如果您将
[NSAppleObject someMethod]
,其中
someMethod
在iOS 7.1中是一个私有的、未记录的方法,但在iOS 8.2中它被公开了。该应用程序支持iOS 7.1以上版本

我想使用
respondsToSelector
检查
someMethod
的可用性,如果可用,请使用它。我的同事争辩说,因为这个方法在7.1中是私有的,我们的应用程序支持7.1,所以苹果将拒绝使用它,即使API现在是公开的


就任何人都能预测苹果会拒绝什么和不会拒绝什么而言,我的同事是否正确?

不,你不会被拒绝。苹果只是在你的应用程序上运行一个测试,看看它使用了什么API。如果API是应用程序的基本SDK的公共API,那么您就可以了。现在的公共API在应用程序的早期部署目标中是私有的,这一事实与此无关

此外,苹果如何判断你的应用程序是否只在API实际为公共的设备上使用现在的公共API

如果苹果拒绝了一个应用程序,因为它使用的API对您的基本SDK是公共的,但对您的部署目标是私有的,那么太多的应用程序将因为尝试使用更新的API而被拒绝,同时仍然支持旧的iOS版本。这将是一个糟糕的决定


更大的问题是,以前的私有API可能更麻烦,或者在其私有的iOS版本中工作方式不同。因此,真正需要担心的问题是,让您的应用程序避免在其私有版本的iOS中使用现在的公共API,因为较旧的私有版本可能无法像在其公共版本的iOS中那样工作。

。比我能想到的任何东西都好。至于API操作的差异,应该(希望)通过准确的单元测试和QA来缓解。