Apple禁止在iOS应用中使用私有或未记录的API。您对与私有或未公开API方法同名的方法进行的任何调用都将被标记为私有API使用,即使所调用的方法是您自己定义的。
App Loader进行初始扫描,检查方法名称,实例变量访问,甚至使用私有方法名称使用@selector。App Loader并不总是做得很好,并且您拥有的源文件越多,就越有可能警告您它生成的API分析文件“太大”。
幸运的是,尽管有警告,您仍然可以提交您的申请。Apple会在内部对其进行检查,如果由于名称重叠而使某些内容退回去,您将不得不再次进行审核。
埃里卡·萨顿(Erika Sadun)试图制作一个名为API Kit的应用程序来为您进行扫描,但她似乎放弃了自己的工作,并从网站上删除了该应用程序的任何痕迹。
Chimp Studios创建了App Scanner来执行相同的操作,但是自2011年以来就没有进行过更新。不幸的是,对于大型项目-其中包括带有CocoaPods大量豆荚的项目-目前(2014年)没有任何好的选择除了主动命名事物,以免与私有API方法和实例名称冲突之外,还可以通过其他方式解决此问题。
您可以主动了解Apple的 可可命名约定并尝试进行预测。这将减少将来的头痛。但是,在Apple引入诸如名称空间之类的内容之前,我们可能会不时继续遇到这个问题。
“无效的二进制”错误可能有多种原因,但与App Loader创建的API分析文档完全无关。
您应该知道,即使进行了扫描,仍然有许多方法可以避免使用私有/未记录的API的禁止。:)