duplicate interface declaration for class ‘test_coredataAppDelegate’

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.

Leave a Comment