zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    linux内核之情景分析mmap操作
    linux内核情景分析之匿名管道
    linux内核情景分析之命名管道
    linux内核情景分析之信号实现
    Linux内核情景分析之消息队列
    linux2.4内核调度
    聊聊程序的配置文件
    汽车引擎是怎么工作的
    Go对OO的选择
    为而不争
  • 原文地址:https://www.cnblogs.com/joesen/p/3079844.html
Copyright © 2011-2022 走看看