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

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

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: метод экземпляра категории объявляется дважды. (Описано здесь: так)

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

вариант 2: случайный импорт .m-файл. (Описано здесь: так)

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

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

Вопрос 1: есть ли способ сказать, до его добавления, где находятся две категории находится?

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

Примечание: структура Opentok является двоичной

происходит в :

xcode 4.6 & xcode 5

в iOS6 & iOS7 по

3 ответов


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


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

неправильно: #import 'MyClass+MyCategory.m'

правильно: #import 'MyClass+MyCategory.h'


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

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