Есть две возможности:
- у вас есть два интерфейса с одним и тем же именем. Используйте поиск Xcode в меню проекта, чтобы найти экземпляры
test_coredataAppDelegate
. Затем переименуйте один из интерфейсов
- каким-то образом вам удалось импортировать файл .h дважды. Убедитесь, что вы всегда используете
#import
, а не #include
.
Изменить:
Немного больше информации о #import
/ #include
:
#include
слепо включает файл в расположении оператора #include
. Это означает, что если вы #include
файл дважды в вашем .m
, вы получите две копии файла. Почти во всех традиционных файлах C #include
есть что-то вроде следующего, заключающего в скобки весь контент:
// some_file.h
#if !defined SOME_FILE_H
#define SOME_FILE_H
// entire content of #include file
#endif
Вышеприведенное иногда называется макросом включения защиты.
В Objective-C, если вы #import
файл, компилятор выполняет проверку, чтобы убедиться, что он еще не был импортирован. Следовательно, охранники обычно опускаются. Так что если вы #include
файл, который должен был #import
ed, ни одна проверка не будет выполнена, и вы иногда получите дублирующиеся определения.