Я пишу библиотеку iOS с открытым исходным кодом в Objective-C, которую в конечном итоге собираюсь загрузить в github. Моя библиотека зависит и определяет некоторые функции, скажем, к примеру ...Как избежать переопределения функций в общих библиотеках?
CGFloat DegreesToRadians(CGFloat degrees);
UIColor RGB(int r, int g, int b);
Это все хорошо ОДНАКО, когда кто-то добавляет мою библиотеку к их проекту, если они тоже определили DegreesToRadians
или RGB
функцию, или они используя другую библиотеку, которая их определяет, тогда будет ошибка компиляции Redfinition of DegreesToRadians
.
В любом случае я могу организовать определение своих функций, использовать соответствующие ключевые слова, как-то использовать #ifndef, переместить операторы #import или любое другое решение, чтобы функции эффективно действовали только внутри моей библиотеки и не были подвергаются наружу и, следовательно, не вызывают конфликта?
ПРЕДОСТЕРЕЖЕНИЯ:
я предпочел бы не префикс своих функций, поскольку они привыкают широко внутренне и испортит семантику и читаемость моего кода.
Я знаю, что могу определить функции «статические» и «с» в классе (классах), которые их используют, но эти функции используются во многих классах, и поэтому этот подход нарушит принцип СУХОЙ.
В идеальном мире пользователь не хочет изменять код моей библиотеки, чтобы избежать этой ошибки, поэтому, если пользователь просто закомментирует определения в моем библиотечном коде или другом потенциальном конфликтующем коде библиотеки, это неприемлемо.
Вы хотите, чтобы эти функции использовались другими? – Horst
Идеально да, но только если им нужно (т. Е. Они могут вручную импортировать). Однако меня все равно интересовали решения, которые не позволяют использовать функции. –