duplicate interface declaration for class 'test_coredataAppDelegate'

后端 未结 5 1976
暖寄归人
暖寄归人 2020-11-30 09:52

two errors suddenly fired in this piece of code - duplicate interface declaration for class \'test_coredataAppDelegate\' - redefinition of \'struct test_coredataAppDelegat

5条回答
  •  春和景丽
    2020-11-30 10:26

    There are two possibilities:

    • you have two interfaces with the same name. Use Xcode's find in project menu option to find instances of test_coredataAppDelegate. 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.

    Edit:

    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
    

    The above is sometimes referred 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.

提交回复
热议问题