【发布时间】:2012-03-01 00:38:40
【问题描述】:
我做了一个 xcode 项目,我做了一些安全工作,他们要求我混淆方法名称
像这样
#define specialMethod a9328238
+(void) specialMethod
{
// do security stuff
}
我从项目(项目 A)制作了一个 .framework 库,并将其包含到另一个项目(项目 B)中。
但是当我使用 Release 构建配置运行(项目 B)时,它总是像这样崩溃。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[SecurityClass a9328238]: unrecognized selector sent to class 0x337cc4'
所以当它尝试访问该方法时会崩溃。
但是当我使用调试构建配置运行(项目 B)它时,它运行顺利
(我将所有构建配置设置保留为默认设置)
【问题讨论】:
-
编译器标志中有什么?
-
它是否可以在没有混淆方法名称的发布版本中工作?
-
他们对默默无闻的安全性有何看法?
-
它无需混淆即可工作。
-
也许您应该更多地说明如何使用混淆 - 您在示例中显示的方式,在方法定义(在 .m 文件中)之前使用
#define不会使该名称对调用者可见(尽管这显然不是您看到的错误的原因,所以我怀疑您正在压缩您的代码)
标签: objective-c ios configuration frameworks build