Проблема с ошибкой "не удается найти объявление протокола" - PullRequest
1 голос
/ 24 февраля 2012

Я получил ТАКИЕ вопросы также, как и этот, и я попытался с решением, но все еще не работает для моего, поэтому спросил это снова.

Это мой VCWithProtocol.h

@protocol mydemoDelegate
@optional
-(void)demoDelegateMethodWithSuccess:(BOOL)yesOrNo;
@end

@interface VCWithProtocol : UIViewController 
{ 
   id<mydemoDelegate>mydelegate;
}
@property (nonatomic,assign)id<mydemoDelegate>mydelegate;

VCWithProtocol.m

`@synthesize mydelegate`

Это мой класс, где я пытаюсь использовать моего делегата

@class VCWithProtocol;

@interface VCTOUseDelegate : UIViewController <mydemoDelegate> //here is where it shows error with cannot find protocol declaration

VCTOUseDelegate.m

VCWithProtocol *obj = [[VCWithProtocol alloc] init];
obj.mydelegate = self;

Я пытался импортировать VCWithProtocol, но не работает

Ответы [ 4 ]

2 голосов
/ 24 февраля 2012

Вместо @class VCWithProtocol; напишите #import VCWithProtocol.h

И некоторые хорошие практики Используйте заглавную букву для первого символа любого имени класса и протокола.
Например MyDemoDelegate и избегайте сохранения использования делегата

@property (nonatomic,assign)id<mydemoDelegate>mydelegate;
0 голосов
/ 03 июля 2014
@property (nonatomic,**weak**)id<mydemoDelegate>mydelegate;

делегату всегда нужна слабая ссылка

0 голосов
/ 24 февраля 2012

Вам нужно добавить #import "VCWithProtocol.h" в начало вашего файла .m.

0 голосов
/ 24 февраля 2012

Синтезируйте ваш mydelegate и позвоните

[self mydelegate];
...