概述
---------------------- 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
最后
以上就是调皮水池为你收集整理的黑马程序员-----Category,protocol和block(二)的全部内容,希望文章能够帮你解决黑马程序员-----Category,protocol和block(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复