自己检查私有API“用法”?

所以,我们都知道苹果公司禁止在iOS应用程序中使用私有或未公开的API。 我对此没有任何问题,因为这是一个好主意,这里有合理的技术原因。 然而,现在有两次我有一个应用程序因为使用私有API而被拒绝,但事实并非如此。 这并不困难 – 私有API包含像connectionStatesetThumbnailsetOrder等符号。 您对名为的方法所做的任何调用都将被标记为私有API使用,即使被调用的方法是您自己定义的。 对于使用连接,缩略图或事物顺序进行操作的程序,上面提到的方法名称并不是那么不可能。 被拒绝,不得不重新提交一个方法,并重新提交延迟至less一个星期,而你等待一个新的审查。

那么有没有办法,使用nm ,iOS框架的类转储等来找出自己的方法名称是否与其中的任何内容冲突? 如果是这样,我们可以在发布前纠正这个问题,避免不必要的拒绝。

我build议使用应用程序扫描仪。 它分析您的.app文件的私人API方法的用法。 当前版本不支持私有API实例variables,但可能会在未来版本中使用。

它将捕获已被命名为私有API方法的方法,即使它有自己的实现。 此外,它会捕获方法内的@selectors(就像官方的iOS自动检查器)。

链接 – > https://github.com/ChimpStudios/App-Scanner

这不是你正在寻找的,但Xcode有两个validation选项,可能值得尝试。

第一个是构build设置。 目前还不完全清楚它所检查的是什么 – 文档没有说明,甚至WWDC会谈也没有详细说明 – 但是它可能是有用的。 我的猜测是,它不检查私人API。

第二个选项是在组织者。 在“存档的应用程序”视图中,您可以将您的应用程序提交给Apple进行validation。 再一次,他们并没有真正确定检查是什么,但我知道这更像是在“手动”审查之前运行的自动化testing。 我的猜测是,这确实检查私人API调用。

你有没有尝试打开设置中的validation生成产品 ? 它应该在审查过程中执行所有在您的应用程序上进行的初始检查

Erica Sadun目前正在研究一些她称之为APIKit的东西,它是一个扫描你的代码的实用程序,并主动警告你有关私有API的用法。 http://ericasadun.com/2009/12/apikit-goes-beta/#c2

唯一的问题是,我找不到任何地方做任何事情。 这显然是在testing,但是这是大约8个月前宣布。

我不知道它是目前的状态,还是它是否真的有用,但是这是你可以研究的。 也许甚至尝试联系她自己? Erica在freenode上的IRC上#iphone-dev频道挂了出来,你可能会赶上她。

归档您的应用程序并进行validation。 这通过你的应用程序,告诉你什么是错的。 真实的故事,我只是在libxslt / xml上亲身体验过。
+不要浪费你的时间在AppScanner(不build议使用)和所有的otool -L等(在开始,你不知道你使用的select器是错误的)。