博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:objective-c 协议和委托
阅读量:4486 次
发布时间:2019-06-08

本文共 1387 字,大约阅读时间需要 4 分钟。

objective-c protocol delegate

protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A view 里面包含了B view
b view需要修改a view界面,那么这个时候就需要用到委托了。
需要几个步骤
1。首先定一个协议
2。a view实现协议中的方法
3。b view设置一个委托变量
4。把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5。事件发生后,用委托变量调用a view中的协议方法
例子:
B_View.h:
@protocol UIBViewDelegate <NSObject>
@optional
- (void)ontouch:(UIScrollView *)scrollView; //声明协议方法
@end
@interface BView : UIScrollView<UIScrollViewDelegate>
{
 id< UIBViewDelegate > _touchdelegate; //设置委托变量
}
@property(nonatomic,assign) id< UIBViewDelegate > _touchdelegate;
@end
B_View.mm:
@synthesize _touchdelegate;
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
 // Initialization code
 _touchdelegate=nil;
 }
 return self;
}
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
 [super touchesBegan:touches withEvent:event];
 if(_touchdelegate!=nil && [_touchdelegate respondsToSelector: @selector(ontouch:) ] == true)
  [_touchdelegate ontouch:self];  //调用协议委托
}
@end
A_View.h:
@interface AViewController : UIViewController < UIBViewDelegate >
{
 BView *m_BView;
}
@end
A_View.mm:
- (void)viewWillAppear:(BOOL)animated
{
 m_BView._touchdelegate = self; //设置委托
 [self.view addSubview: m_BView];
}
- (void)ontouch:(UIScrollView *)scrollView
{
    //实现协议
}

转载于:https://www.cnblogs.com/li-baibo/archive/2012/11/16/2772634.html

你可能感兴趣的文章
java线程死锁研究
查看>>
C++虚析构函数
查看>>
hdu2544---最短路
查看>>
[HAOI2006] 聪明的猴子
查看>>
百度地图的基本使用
查看>>
剪切图片
查看>>
利用PyCharm进行Python远程调试
查看>>
python之模块随笔记-os
查看>>
android:exported 属性详解
查看>>
m2e (maven eclipse) 在运行一些命令时出现了无法compile(Unable to locate the Javac Compiler in:)...
查看>>
Underscore骨骼
查看>>
前端发展史
查看>>
sql plus命令大全(2)
查看>>
10.TreeSet、比较器
查看>>
System V 共享内存区
查看>>
SD卡 TF卡 接口引脚定义
查看>>
STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
查看>>
k8s认证及ServiceAccount-十五
查看>>
【数论】逆元详解
查看>>
精确软件延迟
查看>>