• IOS 设计模式之Delegate模式


    为什么会有delegate模式?换句话说,它可以用来解决神马问题?
    当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,委托模式就可以派上用场。
    
    实例代码:
    ClassA.h
    #import <Foundation/Foundation.h>
    
    @interface ClassA : NSObject
    {
        id  _delegate;
    }
    
    @property(nonatomic, assign) id delegate;
    
    - (void)call;
    
    @end
    
    #import "ClassA.h"
    #import "ClassB.h"
    
    @implementation ClassA
    
    @synthesize delegate;
    
    - (void)call
    {
        NSString* value = @"你好";
        [delegate transparendValue:value];
    }
    
    
    @end
    
    ClassB.h
    #import <Foundation/Foundation.h>
    
    @interface ClassB : NSObject
    
    - (void)transparendValue:(NSString *)fromValue;
    
    @end
    
    ClassB.m
    #import "ClassB.h"
    
    @implementation ClassB
    
    - (void)transparendValue:(NSString *)fromStr
    {
        NSLog(@"%@ ,我是委托测试",fromStr);
    }
    
    @end
    
    main.m
    #import <Foundation/Foundation.h>
    #import "ClassA.h"
    #import "ClassB.h"
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            // insert code here...
            ClassA *a = [[ClassA alloc]init];
            ClassB *b = [[ClassB alloc]init];
            a.delegate = b;
            [a call];
            
        }
        return 0;
    }
  • 相关阅读:
    Flask 中的路由系统
    Flask 中内置的 Session
    Flask中的模板语言jinja2
    Flask 中的 5种返回值
    Redis快速入门
    动态实现前后台分页、翻页按钮、上一页、下一页、首页、末页
    bus.js非父子组件之间通讯
    vue中父子组件之间相互传值
    js实现加减乘除
    禁用微信分享
  • 原文地址:https://www.cnblogs.com/joesen/p/3079844.html
Copyright © 2020-2023  润新知