我正在用 Objective-C 编写一个开源 iOS 库,我最终打算上传到 github。我的库依赖并定义了某些功能,例如...
CGFloat DegreesToRadians(CGFloat degrees);
UIColor RGB(int r, int g, int b);
这一切都很好,但是当有人将我的库添加到他们的项目中时,如果他们也定义了一个DegreesToRadians
或RGB
函数,或者他们正在使用另一个定义它们的库,那么就会出现Redfinition of DegreesToRadians
编译错误。
无论如何我是否能够组织我的函数的定义,使用适当的关键字,以某种方式使用#ifndef,移动#import语句或任何其他解决方案,以便这些函数仅在我的库内部有效地存在并且不会暴露在外部,因此不会引起冲突吗?
注意事项:
我不想给我的函数加上前缀,因为它们在内部被广泛使用,并且会破坏我的代码的语义和可读性。
我知道我可以在使用它们的类中定义函数“静态”和 with-,但这些函数在许多类中使用,因此这种方法会违反 DRY 原则。
在理想情况下,用户不想修改我的库代码以避免此错误,因此让用户只注释掉我的库代码或其他潜在冲突库代码中的定义是不可接受的。