Категория Конфликт: метод экземпляра в категории из конфликтов с тем же методом из другой категории
Есть две ситуации, о которых я знаю, которые вызывают следующие ошибки:
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
) файлу.