objective-c - 在静态库中隐藏代码(iOS Obj-C)

标签 objective-c ios xcode static

我正在努力创建一个我希望出售的 iOS 静态库。我已经完成了初始构建的步骤并生成了 .a/.h 输出。

当我将这些文件包含在一个单独的项目中时,我看不到任何方式来浏览 .a 文件中的内容。

但是,当我的库中的一行代码使应用程序崩溃时(正如我所说,它仍在开发中),调试器会向我显示整个类 (.m) 文件。这是怎么回事?

我不太了解静态库中的所有内容,而且我不确定我是否为模拟器和设备编译了该版本。这可能与它有关吗?如果是这样,有人可以解释为什么吗?

谢谢!!!

最佳答案

别担心,您的源代码不包含在存档 (.a) 文件中。

Xcode 足够智能,可以根据文件中嵌入的调试信息在您的计算机上找到源代码文件。如果您使用“发布”配置构建库(或以其他方式修改build设置以便删除调试符号)并且机器上的任何地方都没有源代码,开发人员将不得不求助于他们对 x86 或 ARM 的了解程序集来弄清楚你的代码是如何工作的。

顺便说一句:

  • 由于很多 Objective-C 是在运行时处理的,所以很多类名和选择器名将在您的库中可见。这就是它的工作原理。您可以尝试混淆它,但我认为您的时间最好花在编写更有用的代码上进行销售。

  • 如果您想为人们提供一个用于 iOS 开发的静态库,您需要为 iOS 模拟器 (x86) 和 iOS 设备 (arm) 构建版本,然后使用 lipo 将它们组合成一个单一的胖静态库。搜索“lipo xcode fat static library”以了解执行此操作的不同方法。有些解决方案比其他解决方案更复杂。

关于objective-c - 在静态库中隐藏代码(iOS Obj-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673223/

相关文章:

iphone - 将 ViewController 分配给委托(delegate),好不好?

swift - 快速编写委托(delegate)引用的不同选项

ios - 如何修复弃用警告消息?

ios - 图表/Swift 3.0 - fatal error : Index out of range

c++ - .mm 转换导致 Undefined symbols for architecture i386 错误

ios - 调用相机时代码崩溃

ios - 将 UIPickerView 的组件设置为分隔符

ios - 在 Xcode 中打印输出时出错(swift)

ios - 在缓存中保存视频

ios - 如何在 iOS 中使用 Oracle 实现推送通知