启用死码清除function不好吗?

我的iOS项目使用dlsymdynamic指向一个可选的C库。 项目中的可选项可以在没有它的情况下运行,只是增加了一些function。

对于背景信息: 在Objective-C的运行时检测并使用可选的外部C库

问题是,XCode清理“未使用”的库。 使用dlsym意味着没有直接引用我的第三方库和XCode删除它。

我以为我find了一个解决scheme,在“其他链接器标志”我添加了-force_load "$(SRCROOT)/my_external.a"在模拟器中工作很好。 ( -all_load工作正常,但似乎矫枉过正)。

问题是,当我移动到一个真实的设备,这种解决方法失败,库不加载(与-all_load相同的东西)。

唯一有效的工作是在XCode中禁用“ Dead Code Stripping清除”function。

问题是:禁用或推荐我的客户禁用此function真的很糟糕吗? 如果是的话,有没有更好的select?

Interesting Posts