iOS协议/代表混淆?

Viv*_*ivi 5 objective-c ios

这一切都是我的第一篇文章,我将尽可能准确.我已经阅读了很多关于iOS协议/委托实现的文章,但所有示例都失败了.假设我有A和B控制器,并希望将数据从A发送到BAh

    @protocol exampleprot <NSObject>
@required
-(void) exampledmethod:(NSString *) e1;
@end

@interface ViewController
{
__weak id <exampleprot> delegate
}
Run Code Online (Sandbox Code Playgroud)

- 我试图推动一些程序

[delegate  examplemethod:@"test"]
Run Code Online (Sandbox Code Playgroud)

BH

@interface test2 : UiViewcontroller <exampleprot>
Run Code Online (Sandbox Code Playgroud)

并在Bm实现方法 - (void)exampledmethod:(NSString*)e1;


那么我做错了什么?

Hus*_*bir 8

基本上这是自定义委托的示例,它用于将消息从一个类发送到另一个类.因此,要在另一个类中发送消息,您需要先设置委托,然后在另一个类中使用协议.以下是示例: -

B.h

@protocol sampleDelegate <NSObject>
@required
-(NSString *)getDataValue;
@end
@interface BWindowController : NSWindowController
{
    id<sampleDelegate>delegate;
}
@property(nonatomic,assign)id<sampleDelegate>delegate;
@end
Run Code Online (Sandbox Code Playgroud)

B.m课堂上

- (void)windowDidLoad
{
 //below only calling the method but it is impelmented in AwindowController class
   if([[self delegate]respondsToSelector:@selector(getDataValue)]){
    NSString *str= [[self delegate]getDataValue];
     NSLog(@"Recieved=%@",str);
    }
    [super windowDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

A.h课堂上

@interface AWindowController : NSWindowController<sampleDelegate> //conforming to the protocol
Run Code Online (Sandbox Code Playgroud)

A.m课堂上

 //Implementing the protocol method 
    -(NSString*)getDataValue
    {
        NSLog(@"recieved");
        return @"recieved";
    }
//In this method setting delegate AWindowController to BWindowController
    -(void)yourmethod
    {

    BWindowController *b=[[BWindowController alloc]init];
    b.delegate=self;   //here setting the delegate 

    }
Run Code Online (Sandbox Code Playgroud)