gpt4 book ai didi

Objective-c 方法混淆在 DEBUG 中有效,但在 RELEASE 中崩溃

转载 作者:技术小花猫 更新时间:2023-10-29 11:19:46 26 4
gpt4 key购买 nike

我做了一个 xcode 项目,在那里我做了一些安全工作,他们要求我混淆方法名称

像这样

#define specialMethod a9328238
+(void) specialMethod
{
// do security stuff
}

我从项目(项目 A)创建了一个 .framework 库,并将其包含到另一个项目(项目 B)中。

但是当我使用发布构建配置运行(项目 B)时,它总是像这样崩溃。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[SecurityClass a9328238]: unrecognized selector sent to class 0x337cc4'

因此当它尝试访问该方法时会崩溃。

但是当我使用调试构建配置运行(项目 B)时,它运行顺利

(我已将所有构建配置设置保留为默认值)

最佳答案

您将 #define 放在哪里进行混淆?是在框架的头文件(.h)还是在框架的实现文件(.m)?

要使混淆有效,必须将其放置在实现和调用者都包含的文件中。

您还可以通过检查预处理文件来检查预处理是否正常。选择实现文件并转到菜单 Product > Generate Output > Generate Preprocessed File(您可以在屏幕底部选择配置)。

关于Objective-c 方法混淆在 DEBUG 中有效,但在 RELEASE 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com