zoukankan      html  css  js  c++  java
  • 自定义delegate和系统定义dalegate的区别

    突然间 想到一个问题,我们自己定义的协议和系统已经存在的协议有什么区别呢?于是查了一下资料,还好,了解了个大概

    自定义delegate和系统定义dalegate的区别
    自定义delegate
    1.声明协议中的接口,但不实现,例如@protocol  DelegateA。

    2.在代理类中实现接口(例如一般代理类选为view controller),声明如下,@interface  ViewAController:UIViewController <DelegateA>,并且实现DelegateA中的接口。

    3.在需要使用这个protocol中方法的类中,声明这个protocol的引用,例如id <DelegateA> delegate,在代理类中DelegateA 将delegate变量指向DelegateA的对象,例如delegate = self;


    系统定义delegate
    1.在代理类中实现接口(例如一般代理类选为view controller),声明如下,@interface  ViewAController:UIViewController <UITextFieldDelegate>,并且UITextFieldDelegate实现中的接口。

    2.在代理类中(例如view controller)声明UITextField *textField;并设置textField.delegate = self;





    自定义delegate和系统定义delegate的区别
    1.系统定义的delegate不需要声明一个它的引用,也就是它的代理函数是由系统来调度的,例如点击一下UITextField控件,系统会自动调用到textFieldShouldBeginEditing,而自定义的delegate需要用户去调用,用[delegate functionA]。



    自定义delegate和系统定义delegate的相同点
    1.需要在代理类中声明并实现接口。
    2.需要设置delegate,通常在代理的类中设置为delegate = self;可见delegate就是一个函数指针。



    自定义delegate的用途
    example 1:在不同的两个view之间传值(准确地说,应该是两个view controller之间)
    example 2:自定义控件。
  • 相关阅读:
    Rafy 领域实体框架演示(2)
    Rafy 领域实体框架示例(1)
    Corrupt JPEG data: 1 extraneous bytes before marker 0xd9 JPEG datastream contains no image
    Raw image encoder error: Empty JPEG image (DNL not supported)) in throwOnEror
    QByteArray数据进行CRC32校验时产生的随机结果
    socket 发送字符串0x00时被截断
    invalid argument (errno: 22)
    libpng error: IHDR: CRC error
    Cannot find Makefile. Check your build settings.
    QT中常用工具总结
  • 原文地址:https://www.cnblogs.com/neworiginou/p/2421151.html
Copyright © 2011-2022 走看看