OC之protocol监听器的实现

  • 画图
  • 图解
  • 代码
  • 总结

一、画图

本人画了一个图(字体和画图水平请忽略)

二、图解

1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢?

其实难理解就难理解到这条线上了

1⃣️这条线首先来说属于按钮的一部分,是一个成员变量

2⃣️这条线中定义了一个协议,什么协议?为什么要定义协议?我想到一个非常好的例子

我们的电脑想要实现通信,遵循的是TCP/IP协议,协议本身独立了我们电脑存在。但是我们电脑内部默认有那么一个东西让我们实现了这个协议

3⃣️监听器也实现这个协议,接着上边的例子

腾讯的qq服务器想知道我们是不是登qq,他就也需要实现TCP/IP协议。相当于我们现在实现了连同

总结:点击登录qq,通过协议传给腾讯服务器,实现登录。OK!

三、代码

1.协议

//
//  ButtonProtocol.h
//  监听器的实现
//
//  Created by apple on 14-3-26.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>

@protocol ButtonProtocol <NSObject>

 -(void)onClick:(Button *)btn;

@end

很简单,协议里面就有一个onClick方法

2.Button类

//
//  Button.h
//  监听器的实现
//
//  Created by apple on 14-3-26.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ButtonProtocol.h"

@interface Button : NSObject

//我们说的Button的那条线
@property (nonatomic, retain) id<ButtonProtocol> delegate;

-(void)press;

@end
//
//  Button.m
//  监听器的实现
//
//  Created by apple on 14-3-26.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import "Button.h"

@implementation Button

-(void)press
{
    [_delegate onClick];
}

@end

 

 3.ButtonListener类

//
//  ButtonListener.h
//  监听器的实现
//
//  Created by apple on 14-3-26.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ButtonProtocol.h"

@interface ButtonListener : NSObject <ButtonProtocol>

@end
//
//  ButtonListener.m
//  监听器的实现
//
//  Created by apple on 14-3-26.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import "ButtonListener.h"

@implementation ButtonListener

-(void)onClick
{
    NSLog(@"按钮被点击了");
}

@end

 代码都还是挺简单的,主要还是理解。理解了代码就自然出来了

四、总结

其实就是一个通信过程,通信双方需要遵守相同的协议。 

posted @ 2014-03-26 15:14  了透糕糟  阅读(842)  评论(0编辑  收藏  举报