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;
}
原文地址:https://www.cnblogs.com/lsfv/p/9127982.html