混淆:(2.5)使用非公共API的应用程序将被拒绝

Ivo*_*eko 6 itunesconnect objective-c appstore-approval ios

我将我的应用程序提交到App商店,并在审核后被拒绝.Apple的理由是:


2.5:使用非公共API的应用程序将被拒绝

*我们发现您的应用使用了一个或多个非公开API,这些API不符合App Store审核指南.不允许使用非公共API,因为如果这些API发生变化,可能会导致糟糕的用户体验.我们在您的应用中发现了以下非公开API:

dateWithCalendarFormat:时区:

HOUROFDAY

minuteOfHour

secondOfMinute

setNavigationBar:

如果您在源代码中定义了与上述API相同名称的方法,我们建议您更改方法名称,以便它们不再与Apple的私有API发生冲突,以避免在将来的提交中标记您的应用程序.

此外,上述API中的一个或多个可能位于应用程序附带的静态库中.如果您无权访问库的源,则可以使用"strings"或"otool"命令行工具搜索已编译的二进制文件."strings"工具可以输出库调用的方法列表,"otool -ov"将输出Objective-C类结构及其定义的方法.这些技术可以帮助您缩小有问题的代码所在的位置.*


但问题是我没有声明或定义任何名称为上述API的方法.我没有使用任何自定义库.这是非常简单的应用程序(刨床),我只使用:UIKit,CoreData,AVFoundation,Foundation和EventKit.

我昨天给苹果发了消息,但仍然没有回答.

有任何想法吗?

Yuj*_*uji 4

你在上面的评论中说你使用了

 [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay]
Run Code Online (Sandbox Code Playgroud)

现在,[datePicker date]返回一个NSDate,其文档显示没有名为dateWithCalendarFormat:timezone:NorhourOfDay等的公共方法。

所以,你不能只使用它们。

至于,的setNavigationBar:属性 是只读属性,如文档所述。因此你无法设置它。navigationBarUINavigationController

当您编译应用程序时,编译器应该发出大量警告,指出未找到选择器等。您应该始终将这些警告视为错误,并消除它们。这样您就可以避免提交后被拒绝。