我将我的应用程序提交到App Store,并在审核后被拒绝。 Apple的理由是:
2.5:使用非公开API的应用将被拒绝
*我们发现您的应用使用了一个或多个非公开API,这些API不符合App Store审核指南。不允许使用非公共API,因为如果这些API发生变化,可能会导致糟糕的用户体验。 我们在您的应用中找到了以下非公开API:
dateWithCalendarFormat:时区:
HOUROFDAY
minuteOfHour
secondOfMinute
setNavigationBar:
如果您的源代码中定义的方法与上述API的名称相同,我们建议您更改方法名称,以便它们不再与Apple的私有API发生冲突,以避免在将来的提交中标记您的应用程序。 / p>
此外,上述API中的一个或多个可能位于应用程序附带的静态库中。如果您无权访问库的源,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。 “strings”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的方法。这些技术可以帮助您缩小有问题的代码所在的位置。*
但是,问题是我没有声明或定义任何名称为上述API的方法。我没有使用任何自定义库。这是一个非常简单的应用程序(刨床),我只使用:UIKit,CoreData,AVFoundation,Foundation和EventKit。
我昨天向Apple发送消息,但仍然没有答案。
有什么想法吗?
答案 0 :(得分:4)
你在上面的评论中说过你用过
[[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay]
现在,[datePicker date]
返回NSDate
,其documentation显示没有名为dateWithCalendarFormat:timezone:
的公开方法,也没有hourOfDay
等。
所以,你不能只使用它们。
至于setNavigationBar:
,navigationBar
的属性UINavigationController
是一个只读属性,正如文档所述。因此您无法设置它。
编译应用程序时,编译器应该发出很多关于它的警告,说没有找到选择器等等。你应该始终将这些警告视为错误,并消除它们。通过这种方式,您可以避免在提交后拒绝。