我正在用 Objective-C 编写一个开源 iOS 库,我最终打算上传到 github。我的库依赖并定义了某些功能,例如...
CGFloat DegreesToRadians(CGFloat degrees);
UIColor RGB(int r, int g, int b);
这一切都很好,但是当有人将我的库添加到他们的项目中时,如果他们也定义了
DegreesToRadians
或 RGB
函数,或者他们正在使用另一个定义它们的库,那么将有一个 Redfinition of DegreesToRadians
编译错误。无论如何我是否能够组织我的函数的定义,使用适当的关键字,以某种方式使用#ifndef,移动#import语句或任何其他解决方案,以便这些函数仅在我的库内部有效地存在并且不会暴露在外部,因此不会引起冲突吗?
注意事项:
最佳答案
最简单的方法是将这些函数定义包含在私有(private)头文件中。
添加 .h
它们在库配置的“私有(private) header ”部分中定义。然后,使用您的库的用户将看不到它们。
如果你想暴露它们,但仍然担心冲突,你为什么不把它们移到类里面呢?我知道它们是不同的函数,但是您可以将它们作为对象的函数移动到类中,例如
MyConverter
- (CGFloat)radiansFromDegrees:(CGFloat)degrees;
然后,用户可以根据需要使用您的类来做同样的事情,或者如果他们想更改功能,可以扩展功能。您的库仍将使用您创建的类,因此不应有交叉线。
关于ios - 如何避免共享库中的函数重定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720049/