代理的基本使用

iOS中傳值的方法有這些
1.通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式。
2.代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象、委托者、协议三部分组成。
3.block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起来逻辑清晰代码整齐。
4.target action:通过将对象传递到另一个类中,在另一个类中将该对象当做target的方式,来调用该对象方法,从内存角度来说和代理类似。
5.KVO:NSObject的Category-NSKeyValueObserving,通过属性监听的方式来监测某个值的变化,当值发生变化时调用KVO的回调方法。

代理

iOS代理在傳值中也很常用(但是我還是喜歡block),不管怎麼說這個代理也得會吧,面試又問的呀。畢竟代理也有自己的好處。
寫代理記住了流程就是:主動方指定代理實現代理的方法,被動方接受代理。
主動方:.h

@protocol TopButDelegate <NSObject>//协议

- (void)transButIndex:(NSInteger)index;//协议方法

@end
@interface AddressBarView : UIView
@property (nonatomic, assign) id<TopButDelegate>delegate;//代理属性

.m

//代理方法, 通过BUT 下标 来滑动视图
- (void)ClickBut:(UIButton *)sender{//按鈕或者其他點擊事件
    if (self.delegate && [self.delegate respondsToSelector:@selector(transButIndex:)]) {
//代理存在且有这个transButIndex:方法
        [self.delegate transButIndex:sender.tag - 100];
    }
}

被動方:接受代理

@interface B ()<TopButDelegate>
@property (nonatomic, retain) person * bar; //A类
- (void)viewDidLoad {
    self.bar = [[person alloc] init];
    [self.view addSubview: self.bar];
    self.bar.delegate = self;//给A类的代理属性给self(B类),这样B就可以执行协议方法啦
}
//执行协议方法
- (void)transButIndex:(NSInteger)index
{
    
}

想了解更多-->http://www.cocoachina.com/ios/20160317/15696.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 代理在开发过程中比较常见,像 就是系统自带的协议,代理一般用来页面间传值,传递事件,接下来通过页面间传值来简...
    CJ_BLUE阅读 4,487评论 1 2
  • 1.OC file 协议//新建协议类 2.书写协议方法 #import @protocol xieyi @req...
    kococlass阅读 1,951评论 0 0
  • 应用一:类之间数据的传递 下级->上级数据传递使用代理很好地避免控制器之间相互依赖(互相导入彼此的头文件)这个问题...
    Arthur澪阅读 1,386评论 0 0
  • 1.基本使用 (1)定义一个协议 protocol TryShowDelegate {func returnStr...
    傻傻小萝卜阅读 334评论 0 1
  • 这个世界上有很多人有学识,有想法,有潜力,就是无机遇,于是他们做些重复的低价值工作,怀才不遇。 但是互联网时代到来...
    显微无间阅读 219评论 0 0