Protocol协议 按钮点击

简介:
要求:用协议模拟实现按钮的点击事件
Button.h
#import <Foundation/Foundation.h> @class  Button;  //<>表示实现了某个协议 @protocol ButtonDelegate <NSObject> -(void)onClick:(Button *)btn; @end  @interface Button : NSObject //delegate就是按钮的监听器  <>里面就是指上面的那个协议 @property(nonatomic,retain) id<ButtonDelegate> delegate; -(void)click; @end

Button.m:
#import "Button.h"  @implementation Button  -(void)click{     //如果delegate实现了     if([_delegate respondsToSelector:@selector(onClick:)])     {         //按钮被点击了,就应该通知监听器         [_delegate onClick:self];     }     else     {         NSLog(@"监听器并没有实现onClick:方法");     } }  -(void)dealloc{     [_delegate release];     [super dealloc]; } @end 

MyListener.h:
#import <Foundation/Foundation.h> #import "Button.h"  @interface MyListener : NSObject<ButtonDelegate>  @end

MyListener.m:
#import "MyListener.h" #import "Button.h"  @implementation MyListener -(void)onClick:(Button *)btn{     NSLog(@"已经监听到按钮:%@点击了",btn); } @end

ButtonListener.h:
#import <Foundation/Foundation.h> #import "Button.h" //一个类要遵守一个协议,要用<>来添加协议名称 @interface ButtonListener : NSObject<ButtonDelegate>  @end

ButtonListener.m:
#import "ButtonListener.h"  @implementation ButtonListener -(void)onClick{     NSLog(@"按钮被点击了"); } @end

Main:
#import <Foundation/Foundation.h> #import "Button.h" #import "ButtonListener.h" #import "MyListener.h"  int main(int argc, const char * argv[]) {      @autoreleasepool {         //初始化一个按钮         Button *btn=[[[Button alloc] init] autorelease];         //初始化一个按钮监听器         ButtonListener *btnListener=[[[ButtonListener alloc] init] autorelease];         MyListener * mylisten=[[[MyListener alloc] init] autorelease];         //将这个监听器给按钮         btn.delegate=btnListener;         [btn click];         NSLog(@"当前按钮是%@",btn);         btn.delegate=mylisten;         [btn click];     }     return 0; }
结果:

2013-08-02 14:47:26.352 Protocol[656:303] 监听器并没有实现onClick:方法

2013-08-02 14:47:26.353 Protocol[656:303] 当前按钮是<Button: 0x100109940>

2013-08-02 14:47:26.354 Protocol[656:303] 已经监听到按钮:<Button: 0x100109940>点击了























本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366483 ,如需转载请自行联系原作者

相关文章
|
6月前
|
前端开发 PHP
2023Fiddler学习笔记 -- 状态栏及辅助选项卡
2023Fiddler学习笔记 -- 状态栏及辅助选项卡
40 0
|
Web App开发 JavaScript 数据安全/隐私保护
fiddler使用——配置抓取https,出现提示“禁用解密”“单击配置”
fiddler使用——配置抓取https,出现提示“禁用解密”“单击配置”
fiddler使用——配置抓取https,出现提示“禁用解密”“单击配置”
SAP C4C Mashup port bindingF4帮助对话框里的数据源
我们在SAP Cloud for Customer上创建Mashup时,会选择port binding:
SAP C4C Mashup port bindingF4帮助对话框里的数据源
|
搜索推荐 定位技术
通过一个连接获取点击者IP
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396360 2017年9月9日 14:27:49跟新: 访问:https://iplogger.org/访问搜索引擎搜索图片,或者本地搜索,找一张图片传到网上可以公开访问的地方,任意图片。
2494 0
|
安全 网络协议 网络安全