我无法弄清楚我应该如何使用class-dump
来查看我的应用程序访问私有内容的位置。我收到错误消息“应用程序引用了 Payload/My App.app/My App: locale_charset 中的非公共符号”。但是,我认为最好知道我的应用程序在哪里访问私有方法或其他私有内容。
我已经看到了这个答案,但它根本没有解释如何使用它。我已经尝试查找如何使用它,但除了文档之外我找不到任何有用的东西。
如何使用它在我的应用程序中搜索访问的私有内容?
我无法弄清楚我应该如何使用class-dump
来查看我的应用程序访问私有内容的位置。我收到错误消息“应用程序引用了 Payload/My App.app/My App: locale_charset 中的非公共符号”。但是,我认为最好知道我的应用程序在哪里访问私有方法或其他私有内容。
我已经看到了这个答案,但它根本没有解释如何使用它。我已经尝试查找如何使用它,但除了文档之外我找不到任何有用的东西。
如何使用它在我的应用程序中搜索访问的私有内容?
class-dump
提供由可执行文件或框架定义的所有方法的列表(嗯,或多或少;有一些方法可以存在,但不会出现,但class-dump
会得到其中的大部分)。可以将class-dump
Apple 框架的输出与扫描公共标头进行比较,以找到私有方法列表,然后扫描您的代码以查找这些私有方法。这是很多工作,你肯定需要一个工具来完成它。
至少有一个工具说它有帮助,称为App-Scanner。我还没有尝试过。我不知道这个领域有任何其他工具。
也就是说,当然,偶然使用它们有点奇怪。您通常必须采取一些技巧才能在不产生警告的情况下调用它们(当然,您不会发出警告,因为那太疯狂了;如果是,请修复您的警告,您会找到私有 API)。如果您在某些地方禁止了未知选择器警告,或者您使用类别来声明 Apple 私有方法,那么请查找并删除它们。当你说“我在做这件不公开的事情,我在欺骗编译器让我做这件事”时,一定有一个时间点。一般不会偶然发生。