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