Исключить экземпляр метод переопределить компоновщик предупреждение рамки xcode

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

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

Ответ 1

Есть два варианта, с которыми я столкнулся, добавив флаги в "Другие флаги компоновщика" в области настроек сборки Xcode:

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

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

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

Ответ 2

Если опция скрытия этого предупреждения существует, она будет находиться под символом

Навигатор проекта (список файлов слева) → [Название проекта] (тот, у которого есть синий значок) → Настройки сборки → Apple LLVM-компилятор 3.1 - Предупреждения

также:

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