美文网首页
代理的基本使用

代理的基本使用

作者: if_you_like | 来源:发表于2017-08-21 16:34 被阅读8次

    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

    相关文章

      网友评论

          本文标题:代理的基本使用

          本文链接:https://www.haomeiwen.com/subject/pxfhdxtx.html