zoukankan      html  css  js  c++  java
  • [ios]objective-c 协议和委托 (重点基础知识)

    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
    {
        //实现协议
    }
  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3193888.html
Copyright © 2011-2022 走看看