zoukankan      html  css  js  c++  java
  • iOS 关于iOS开发中的delegate

    有A、B两个对象,A要完成某件事,想让B帮它做。

    这时候,A中就要实例化一个B的对象b,A还要在头文件中声明协议,然后在B中实现协议中对应的方法。

    这时候再把A的delegate设置为b,在需要的地方,就可以调用B来完成任务了。

    //  main.m
    #import <Foundation/Foundation.h>
    #import "A.h"
    #import "B.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            A *a = [[A alloc] init];
            B *b = [[B alloc] init];
            a.delegate = b;
            [a doSomething];
        }
        return 0;
    }
    
    
    //  A.h
    #import <Foundation/Foundation.h>
    #import "CertainDelegate.h"
    
    @interface A : NSObject
    @property (weak,nonatomic) id<CertainDelegate> delegate;
    - (void)doSomething;
    @end
    
    
    
    //  A.m
    #import "A.h"
    #import "B.h"
    
    @interface A ()
    @end
    
    @implementation A
    - (void)doSomething{
        [_delegate requiredFunc];
    }
    
    @end
    
    
    
    //  B.h
    #import <Foundation/Foundation.h>
    #import "CertainDelegate.h"
    
    @interface B : NSObject<CertainDelegate>
    @end
    
    
    
    //  B.m
    #import "B.h"
    
    @interface B ()
    @end
    
    @implementation B
    -(void)requiredFunc{
        NSLog(@"requiredFunc is running.");
    }
    @end
    
    
    
    
    //  CertainDelegate.h
    #import <Foundation/Foundation.h>
    
    @protocol CertainDelegate <NSObject>
    - (void)requiredFunc;
    @end

    推荐深度阅读文章

    Stay hungry,stay foolish.
  • 相关阅读:
    JavaScript高级第01天笔记
    JavaScript基础第06天笔记
    JavaScript基础第05天笔记
    JavaScript基础第04天笔记
    JavaScript基础第03天笔记
    JavaScript基础第02天笔记
    JavaScript基础第01天笔记
    03-CSS文字文本样式
    CSS第二天笔记
    浮动
  • 原文地址:https://www.cnblogs.com/ficow/p/5034750.html
Copyright © 2011-2022 走看看