gpt4 book ai didi

Objective-C——同一个库的不同版本导致名称冲突

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:13 26 4
gpt4 key购买 nike

我读到 Objective–C 很容易导致名称冲突,因为它的本性,所以给代码加上前缀是最佳实践。

如果您的 MyAwesomeApp iOS 应用程序使用两个外部库 FooLibraryBarLibrary 导致名称冲突,您如何解决这个问题,因为在内部FooLibrary 也恰好使用 BarLibrary 吗?

一开始有人可能会建议删除对 BarLibrary 的任何一个引用,但你不能那样做,因为虽然两者都是 BarLibrary,但它们实际上是两个它的不同版本,所以 FooLibrary 依赖于 BarLibrary(v1) 实现,而你的 MyAwesomeApp 依赖于 BarLibrary(v2) 实现。

在这一点上,我意识到同一个库的两个不同版本实际上是两个不同的东西,因此它们首先不应该共存于同一个项目中。

除了重构(通过重命名)其他人的代码之外,还有其他方法可以解决这个难题吗?

最佳答案

如果其他图书馆正在使用可能共享的图书馆,例如一个 JSON 库,他们正在编译一个库供您包含,那么他们真的应该在库上加上自己的前缀。

例如,我曾在 Urban Airship 中看到过这种做法。他们使用 JSONKit(或一些 JSON 库),但他们在所有 JSONKit 用法前加上 UA——这样当我使用不同版本的 JSONKit 时,它们可以一起编译和运行。

我也看到它用 Reachability 完成了……每个人似乎都有自己的版本……

关于Objective-C——同一个库的不同版本导致名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519584/

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