Не удается найти объявление протокола в Xcode - PullRequest
21 голосов
/ 29 апреля 2010

Я испытал что-то сегодня, когда я создавал свое приложение. Я объявил протокол в моем 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>

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

Спасибо ...

Ответы [ 5 ]

57 голосов
/ 29 сентября 2011

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

11 голосов
/ 01 мая 2010

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

4 голосов
/ 30 января 2013

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

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

2 голосов
/ 29 апреля 2010

Вы делаете

#import "NameOfDelegate.h" 

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

0 голосов
/ 23 мая 2015

Используйте '@class MyObject;' во избежание петли импорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...