1

我无法弄清楚我应该如何使用class-dump来查看我的应用程序访问私有内容的位置。我收到错误消息“应用程序引用了 Payload/My App.app/My App: locale_charset 中的非公共符号”。但是,我认为最好知道我的应用程序在哪里访问私有方法或其他私有内容。

我已经看到了这个答案,但它根本没有解释如何使用它。我已经尝试查找如何使用它,但除了文档之外我找不到任何有用的东西。

如何使用它在我的应用程序中搜索访问的私有内容?

4

1 回答 1

5

class-dump提供由可执行文件或框架定义的所有方法的列表(嗯,或多或少;有一些方法可以存在,但不会出现,但class-dump会得到其中的大部分)。可以将class-dumpApple 框架的输出与扫描公共标头进行比较,以找到私有方法列表,然后扫描您的代码以查找这些私有方法。这是很多工作,你肯定需要一个工具来完成它。

至少有一个工具说它有帮助,称为App-Scanner。我还没有尝试过。我不知道这个领域有任何其他工具。

也就是说,当然,偶然使用它们有点奇怪。您通常必须采取一些技巧才能在不产生警告的情况下调用它们(当然,您不会发出警告,因为那太疯狂了;如果是,请修复您的警告,您会找到私有 API)。如果您在某些地方禁止了未知选择器警告,或者您使用类别来声明 Apple 私有方法,那么请查找并删除它们。当你说“我在做这件不公开的事情,我在欺骗编译器让我做这件事”时,一定有一个时间点。一般不会偶然发生。

于 2013-04-17T21:41:00.837 回答