Подтвердить что ты не робот

Невозможно найти объявление протокола в Xcode

Я испытал что-то сегодня, пока я строю свое приложение. Я объявил протокол в MyObject1 и добавил на нем свойство делегирования. Я назначил MyObject2 в качестве делегата MyObject1. Я добавил его таким образом, как обычно.

@interface MyObject2 : UIViewController <DelegateOfObject1>

Но Xcode говорит, что мое объявление протокола не может быть найдено. Я проверил свой код, но я объявил этот протокол. Я пытаюсь назначить MyObject2 в качестве делегата другого объекта. Я редактировал свой код следующим образом

@interface MyObject2 : UIViewController <UITableViewDelegate,DelegateOfObject1>

но Xcode снова заявляет, что не может найти объявление протокола DelegateOfObject1. Я попытался удалить DelegateOfObject1 в моем коде и добавить назначить MyObject как делегат другого объекта, и он будет выглядеть следующим образом.

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate>

Ошибок не обнаружено. Затем я попытался снова добавить мой DelegateOfObject1 в код

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate,DelegateOfObject1>

В то время Xcode не обнаружил ошибок в моем коде. Поэтому я снова попытался удалить UITableViewDelegate и UITabBarDelegate в своем коде.

@interface MyObject2 : UIViewController <DelegateOfObject1>

В то время ошибка не обнаружилась, но это был тот же самый код, который я написал раньше. Что, вероятно, должно быть причиной этого материала в моем коде?

Спасибо...

4b9b3361

Ответ 1

Я поместил объявление протокола в отдельный файл и импортировал его в MyObject2

Ответ 2

Ошибка вызвана циклом импорта.

Ответ 3

Ошибка должна быть в цикле импорта.

У меня был импорт "AppDelegate.h" в обоих классах. Я удалил его из класса, который объявил протокол, и ошибка исчезла.  :)

Ответ 4

Вы делаете

#import "NameOfDelegate.h" 

В верхней части заголовка MyObject?

Ответ 5

Использовать '@class MyObject;' чтобы избежать цикла импорта.