Search code examples
iphoneiosfacebookfbconnect

Duplicate Interface Definition When Implementing FBConnect


I am trying to add FBConnect to my application which includes the SBJson framework. However, when I try to compile the project I get these two errors:

Duplicate interface definition for class 'SBJsonWriter'
Duplicate interface definition for class 'SBJsonParser'

What can I do to fix this error? Thanks for any help.


Solution

  • There are two possibilities:

    you have two interfaces with the same name. Use Xcode's find in project menu option to find instances of SBJsonWriter. Then rename one of the interfaces somehow you have managed to import the .h file twice. Check to make sure you always use #import and not #include.

    A bit more info on #import/#include:

    include blindly includes the file at the location of the #include statement. This means that if you #include a file twice in your .m you will get two copies of the file. Almost all traditional C #include files have something like the following bracketing all the content:

    // some_file.h
    #if !defined SOME_FILE_H
    #define SOME_FILE_H
    
    //  entire content of #include file
    
    #endif
    

    he above is sometimes referrwed to as an include guard macro.

    In Objective-C, if you #import a file, a check is performed by the compiler to make sure it has not already been imported. Consequently the guards are usually omitted. So if you #include a file that was supposed to be #imported, neither check will be done and you will sometimes get duplicate definitions.