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 #import
ed, neither check will be done and you will sometimes get duplicate definitions.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…