iOS 代理浅谈

作者: 路小白同学 | 来源:发表于2016-10-10 16:55 被阅读0次

    代理模式,应该是iOS开发中用使用最多的模式之一,一般用它来传值。最近项目中需要自己写一个第三方,所以就用到它了,谈一谈自己的实现过程。

    首先声明一个代理:

    @protocol LZQPickerDelegate<NSObject>
    - (void)changeTime:(NSDate *)date;
    - (void)determinSelected:(NSDate *)date;
    @end
    

    @required:必须实现的方法

    @optional:可选 实现的方法(可以全部都不实现)

    以上就是一个代理的简单声明:@protocol 是声明的关键字,一般输入@protocol就会弹出来,声明很简单,里面的方法默认是@required 如果想要方法选择性实现 写在@optional后面。

    然后声明一个id类型的指针,用来指向实现代理方法的类:

    @property (nonatomic,assign)id <LZQPickerDelegate>delegate;

    一般这么多一个代理差不多就实现了。而后要对代理就是要进行实现。

    我要写的是一个UIDatePicker 的的第三方,来讲一下用到代理的部分:

    - (void)datePickerChange:(UIDatePicker *)datePicker
    {
    //    判断delegate 指向的类是否实现协议方法
        if ([self.delegate respondsToSelector:@selector(changeTime:)])
        {
            [_delegate changeTime:datePicker.date];
        }
       
    }
    

    如上datePickerChange是UIDatePicker绑定的方法,里面是对代理方法的处理。
    很简单的就可以把值从一个页面传递到另一个页面。
    下面是Demo的链接,有用的可以下来看看:http://code.cocoachina.com/view/133085

    相关文章

      网友评论

        本文标题:iOS 代理浅谈

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