zoukankan      html  css  js  c++  java
  • objective-c 快速学习1-意图实现之protocal

    参考快速学习指南

    为了快速掌握oc的基本语法,按照上面文章速度学习oc .大概用了4~5天时间。粗越了解下oc.只是粗越了解。

    目的主要还是实践 这个 “学习理论”。并完善这个学习理论。

    鬼知道以后还要学习多少语言呢?

    1.数字处理:四则运算。

    2.字符串处理:分割和组合。

    3.集合处理:可变和不可变集合。 dictionary(oc没写例子)

    4.对象和继承:人,雇员,老板, 放入集合并多态的表示他们的薪水和税收。

    5.意图和实现的分离(事件):单个函数指针的实现(c风格和block)。一组函数指针的实现(protocal)

    6.io的处理。没写

    7.内存管理

    //
    //  main.m
    //  practice
    //  Created by liangshun on 18/5/30.
    //  Copyright © 2018年 liangshun. All rights reserved.
    
    #import <Foundation/Foundation.h>
    
    //定义协议
    @protocol ButtonProtocol <NSObject>
    -(void) onClick;
    @end
    
    
    //委托者
    @interface MyButton : NSObject
    @property id<ButtonProtocol> ButtonDelegate;
    -(void) Click;
    
    @end
    
    //被委托者
    @implementation MyButton
    
    -(void)Click
    {
        if([self.ButtonDelegate respondsToSelector:@selector(onClick)])
        {
            [self.ButtonDelegate onClick];///调用意图,实际调用了某个实现
            
        }
    }
    @end
    
    
    //1.协议,可集中提供一组接口,让一个实现协议的类来完成。而建立不同的实现类,来达到扩展的意图。
    @interface ButtonDelegate_SubmitButton : NSObject <ButtonProtocol>
    @end
    @implementation ButtonDelegate_SubmitButton
    -(void) onClick
    {
        NSLog(@"first button function");
    }
    @end
    
    
    @interface ButtonDelegate_SubmitButton2 : NSObject <ButtonProtocol>
    @end
    @implementation ButtonDelegate_SubmitButton2
    -(void) onClick
    {
        NSLog(@"second button function");
    }
    @end
    
    
    int main(int argc, const char * argv[]) {
        
        MyButton *submitButton=[MyButton new];
        submitButton.ButtonDelegate=[ButtonDelegate_SubmitButton new];
        [submitButton Click];
        
        //新的协议实现类。添加一个协议类,并传给委托者。委托者可随意扩展不同的实现。
        submitButton.ButtonDelegate=[ButtonDelegate_SubmitButton2 new];
        [submitButton Click];
        
        return 0;
    }
  • 相关阅读:
    统计字符的有效字数
    Ubuntu Wifi网络连接不上或经常断网
    Git实战指南----跟着haibiscuit学Git(第十一篇)
    Git实战指南----跟着haibiscuit学Git(第十篇)
    Git实战指南----跟着haibiscuit学Git(第九篇)
    Git实战指南----跟着haibiscuit学Git(第八篇)
    Git实战指南----跟着haibiscuit学Git(第七篇)
    Git实战指南----跟着haibiscuit学Git(第六篇)
    linux之网络命令
    Ceph实战入门之安部署篇
  • 原文地址:https://www.cnblogs.com/lsfv/p/9127982.html
Copyright © 2011-2022 走看看