Вопрос по linker, warnings, xcode, frameworks – подавить метод экземпляра

21

У меня есть библиотека, которая начала выдавать пару предупреждений компоновщика под XCode 4.4. Предупреждения соответствуют строчкам «ld: warning: instance method» methodName: & apos; в категории из метода переопределений из класса в & quot;

Фреймворк по-прежнему работает нормально, и я предполагаю, что компания, написавшая его, исправит это в следующем выпуске, но пока эти предупреждения очень раздражают. Есть ли способ отключить их, не отключая все предупреждения компоновщика?

Вы создали / назвали метод в своем классе, так же, как другой метод в другом классе? Hexark
Они не мои уроки. Он находится в готовой библиотеке. ima747
Что означает предупреждение? trojanfoe
Я думаю, это означает, что люди, которые сделали библиотеку ненадлежащим образом, подклассировали некоторые вещи. Кажется, что-то не нарушает, но компоновщик немного ржавеет, что раздражает, так как я не могу это исправить, потому что это закрытый источник. ima747

Ваш Ответ

2   ответа
1

оно будет находиться под:

Project Navigator(the file list on the left )-> [Project name](the one with the blue icon) -> Build Settings -> Apple LLVM compiler 3.1 - Warnings

Также:

В Xcode, как подавить все предупреждения в определенных исходных файлах?

Спасибо за это. В разделах компилятора нет предупреждений, относящихся к библиотекам или конкретным предупреждениям, которые я вижу. Я мог бы отключить все предупреждения, но именно это я и стараюсь избегать. Другой упомянутый пост также предназначен для файлов, которые будут скомпилированы, но библиотеки и заголовки там не отображаются, поэтому нет возможности специально установить для них флаги. Я должен предположить, что нет никакого способа отключить предупреждение в xcode, так как оно из библиотеки. ima747
Другое решение, опять же для компилятора, а не компоновщика, это диагностические прагмы:clang.llvm.org/docs/…
Это плохой совет. Я полагаю, что есть много предупреждений лязг, которые не имеют флажки в пользовательском интерфейсе настройки сборки. В общем постановка конкретной-W опция в файле исправит эту проблему во время компиляции. Установить-fdiagnostics-show-option вариант файла и Clang скажет вам, какой-W использовать. В этом конкретном случае это не сработает, потому что вопрос OP касаетсяlinker, а не компилятор.
Если у вас есть проблемы с новым xCode 7, предоставляющим вам весь «, эта функция переопределяет член, но не объявляет переопределение». speil; Вы можете добавить флаг -Wno-inconsistent-отсутствующий-override в «флаги других предупреждений» в тех же настройках сборки проекта, упомянутых выше
13

которые я предложил, добавив флаги в «Другие флаги компоновщика». в области настроек сборки Xcode:

1) Добавление-Xlinker -w будет подавлятьall предупреждения компоновщика, независимо от типа (это-w пометить в ld (1)). Очевидно, что это успокоит это конкретное предупреждение, но также и все остальные предупреждения.

2) Добавление-Xlinker -no_objc_category_merging пропустит шаг оптимизации, где компоновщик объединяет все методы категории в базовый класс во время компоновки, что затем происходит во время выполнения. Крошечный чуть медленнее при запуске, вероятно, но, вероятно, он все равно будет быстрее, чем метод, свистящий во время выполнения, и, поскольку именно на этом этапе ld (1) выдает предупреждение, он также пропустит это.

Похоже, что у ld нет способа хирургически подавить любое отдельное предупреждение, как это делает компилятор, хотя у него есть специальные флаги для нескольких из них или их групп (ни один из которых не помогает с этим). Ни одно из приведенных выше решений, вероятно, не рекомендуется для производственного кода, но в некоторых ситуациях одно или другое может помочь.

поблагодарить. Ты спас мой день

Похожие вопросы