Категория Конфликт: метод экземпляра в категории из конфликтов с тем же методом из другой категории

Есть две ситуации, о которых я знаю, которые вызывают следующие ошибки:

ld: warning: instance method 'resetAudioSystem' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+AudioSnoop.o) conflicts with same method from another category
ld: warning: instance method 'attachAudioSnoopBlock:' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+AudioSnoop.o) conflicts with same method from another category
ld: warning: instance method 'setVideoSnoopDelegate:' in category from /opentok-ios-sdk/Opentok.framework/Opentok(OTPublisher+VideoSnoop.o) conflicts with same method from another category

Возможность 1: Метод экземпляра категории объявляется дважды. (Описан здесь: qaru.site/info/447537/...)

Но, когда я выполняю поиск любого из трех методов экземпляра (в Xcode или Grep), я не нахожу его дважды объявленным.

Возможность 2: Случайное импортирование файла .m. (Описан здесь: qaru.site/info/447537/...)

Но я проверил все свои импорт, и я только импортирую фреймворк один раз во всем проекте. Также отображается только один раз на этапах сборки.

Моя программа работает без сбоев, по-видимому, потому, что добавлено последнее добавленное определение категории, и это бывает правильно. (Источник)

Вопрос 1: Есть ли способ сообщить, до его добавления, где расположены две категории?

Вопрос 2: Любые другие идеи о том, как разрешить это?

Примечание. Opentok Framework является двоичным

Встречается в:

xcode 4.6 и xcode 5

iOS6 и iOS7

Ответ 1

Это похоже на ошибку компоновщика. Возможно, SDK был связан более одного раза, или -ObjC отсутствует/присутствует там, где этого не должно быть. Проверьте флаги компоновщика. Попробуйте удалить все фреймворки OpenTok, убедитесь, что он отсутствует в ваших проектах, а затем повторно загрузите его и установите снова.

Ответ 2

У меня были эти предупреждения, потому что я случайно импортировал файл реализации категории вместо его заголовочного файла. Итак:

неверно: #import 'MyClass+MyCategory.m'

справа: #import 'MyClass+MyCategory.h'

Ответ 3

У меня была эта ошибка, потому что я буквально вставлял реализацию моих методов в заголовочный файл (*.h). Однако он работал хорошо; единственный признак - предупреждения.

Проверьте, соответствует ли ваша реализация правильному (*.m) файлу.