黑马程序员-----Category,protocol和block(二)
来源:互联网 发布:东航淘宝旗舰店 编辑:程序博客网 时间:2024/06/06 17:07
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
Protocol专题
//Button.h@protocol ButtonDelegate <NSObject>
- (void)onclick:(Button *)btn;
@end
@interface Button : NSObject
@property (nonatomic,retain) id<ButtonDelegate> delegate;
- (void)click;
@end
//Button.m
@impelmentation
- (void)click
{
//如果delegate实现了onClick:方法
if([_delegate responsToSelector:@selector(onClick:)])
{
[_delegate onClick:self];
}
else
{
NSlog(@"没有实现onClick:方法");
}
}
@end
//ButtonListener.h/m
@interface ButtonListener : NSObject <ButtonDelegate>
@end
@implementation ButtonListener
- (void)onclick:(Button *)btn
{
NSlog(@"%@按钮被点击了",btn);
}
@end
//main.m
int main(int argc, const char *argv[])
{
@autoreleasepool
{
//定义一个按钮
Button *button = [[[Button alloc] init] autorelease];
//定义一个按钮监听器
ButtonListener *listener = [[[ButtonListener alloc] init] autorelease];
//设置按钮监听器delegate属性
button.delegate = listener;
//点击按钮
[button click];
}
return 0;
}
1>概念
Protocol简单来说就是一系列方法的列表,其中申明的方法可以被任何类实现。这种模式一般称为代理(delegation)模式。
2>监听器思想
用一个对象监听另外一个对象的改变。
Button内部必须持有protocol的引用
3>@required和@optional
@required:要求必须实现,但是不实现编译器不报错
@optional:选择实现,可以不实现
4>responsToSelector:(SEL)和conformToProtocol:(Protocol *)
responsToSelector:(SEL):判断对象是否实现了某个方法;参数描述:@selector(方法名)
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
0 0
- 黑马程序员-----Category,protocol和block(二)
- 黑马程序员-----Category,protocol和block(一)
- 黑马程序员-----Category,protocol和block(三)
- 黑马程序员-----Category,protocol和block(四)
- 黑马程序员-block和protocol
- 黑马程序员——OC基础:block和Protocol及Category
- 黑马程序员---OC基础---Block、分类Category、协议protocol
- 黑马程序员 block、protocol
- 黑马程序员(OC特有语法-block和-Protocol)
- 黑马程序员员—OC(block和protocol)
- 黑马程序员------OC block(代码块)和protocol(协议)
- 黑马程序员------OC基础-----block和protocol
- 【黑马程序员】-oc中的block和protocol
- 黑马程序员-OC-block和protocol
- 黑马程序员 OC基础: Block 和 Protocol
- 黑马程序员——OC基础学习(五)---分类(Category),代码块Block和protocol代理设计模式
- 黑马程序员——OC的Category和Protocol
- 黑马程序员——OC热身——Category、Protocol、Block、常用结构体
- GIS项目设计第一步——确定项目目标
- TX2440 CMOS 摄像头驱动
- Reverse Nodes in k-Group
- Linux中断(interrupt)子系统之一:中断系统基本原理
- My eclipse中插件Flash不出现server试图解决办法
- 黑马程序员-----Category,protocol和block(二)
- JDK1.5的重要新特征
- hdu4847 水题
- 程序员应该知道的 13 个设计技巧
- ORA-01791: 不是 SELECTed 表达式
- iOS UITableViewCell重用问题
- Python学习笔记(五):函数和变量
- xmpp 比较好用的两款软件下载
- MFC之文件对话框