我正在开发一个集成了其他 SDK(例如 Facebook SDK 3.5)的 iOS SDK。为了防止冲突并允许我的客户也导入这些 SDK,我想重命名我的代码中的所有类/枚举(例如,将 FBSession 重命名为 RDFBSession 等)。
有没有一种简单的方法可以做到这一点,而不是逐个类地使用 Xcode 的重命名功能?
我正在开发一个集成了其他 SDK(例如 Facebook SDK 3.5)的 iOS SDK。为了防止冲突并允许我的客户也导入这些 SDK,我想重命名我的代码中的所有类/枚举(例如,将 FBSession 重命名为 RDFBSession 等)。
有没有一种简单的方法可以做到这一点,而不是逐个类地使用 Xcode 的重命名功能?
Xcode 还提供文本搜索和替换。这将比单个重构更快,但最终自动化程度较低。您可以通过首先将项目最小化为相关依赖项/源(如果可能)来加快逐步重构的速度。
但是,重命名库中的声明不会改变其相关二进制文件的符号名称。如果它与二进制文件一起分发,那么重命名只会导致链接器错误或(在某些情况下)运行时错误。
如果您需要使用您的客户也可能使用的 3rd 方库,最好的办法是简单地通知他们需要将库与他们的应用程序链接,然后发布当前版本支持的版本,以便他们知道他们有一些如果他们在某些库上走得太远,则进行额外的测试。
我认为比简单地重命名类更好的方法是下载 Facebook 的开源代码,重命名那里的类,然后用一组重命名的头文件编译一个新的静态库。然后,您可以确定不会发生冲突,并且您使用的是您自己命名的符号。
不过,我必须警告您 - 无论您如何解决此特定问题,这样的工作都可能使更新 SDK 成为一场噩梦。