Category Conflict: instance method in category from conflicts with same method from another category

Emin Israfil picture Emin Israfil · Nov 12, 2013 · Viewed 8.5k times · Source

There are two situations, that I am aware of, that cause the following errors:

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

Possibility 1: A category instance method is declared twice. (Described here: SO)

But, When I do a search of any of the 3 instance methods (in Xcode or Grep) I do not find it declared twice.

Possibility 2: Accidentally importing a .m file. (Described here: SO)

But, I checked all my imports and I only import the framework once in the whole project. Also, only shows up once in Build Phases.

My program runs without crashing, presumably because the last category definition added is used and it happens to be correct. (Source)

Question 1: Is there a way to tell, prior to its addition, where the two categories are located?

Question 2: Any other ideas about how to resolve this?

Note: The Opentok Framework is a binary

Occurs in :

xcode 4.6 & xcode 5

iOS6 & iOS7

Answer

martn_st picture martn_st · Aug 25, 2014

I had this warnings because I accidentally imported the implementation file of a category instead of it's header file. So:

wrong: #import 'MyClass+MyCategory.m'

right: #import 'MyClass+MyCategory.h'