Подавить предупреждение линкера: "Мета метод X в категории из Y переопределяет метод из класса в Z"

Я намеренно использую категорию для переопределения метода, который, как я знаю, уже реализован в основном классе. Я знаю, что это, как правило, признак слабого дизайна - пожалуйста, никаких лекций - но я не могу подклассировать чисто в этом случае. Я знаю, swizzling также может быть вариантом.

Но сейчас, как я могу подавить это предупреждение? llvm выдает предупреждение компилятора о том, что я могу отключить (diagnostic ignored "-Wobjc-protocol-method-implementation"). Но затем компоновщик также жалуется.

Этот вопрос задает аналогичный вопрос, но он ищет другой ответ. Как я могу рассказать компоновщику, чтобы он не жаловался?

Спасибо.

1 ответ

К сожалению, нет хорошего ответа.

Единственное решение на основе компоновщика - передать -Wl,-w во время соединения; то есть сообщить Клану передать опцию -w до компоновщика. Это будет подавлять все предупреждения компоновщика, потенциально включая те, которые вы все еще хотели бы видеть.

Обходной путь более высокого уровня заключается в том, чтобы пропустить вывод компоновщика через grep -v. Детали этого решения будут в значительной степени зависеть от вашей оболочки и вашей системы сборки.

licensed under cc by-sa 3.0 with attribution.