zoukankan      html  css  js  c++  java
  • objective-c 快速学习1-意图实现之 函数指针和block

    参考快速学习指南

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

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

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

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

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

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

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

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

    6.io的处理。没写

    7.内存管理

    //
    //  main.m
    //  practice
    //  通过c的直接的函数指针,来实现意图和实现的分离。(不喜欢用回调来解释。回调在不同场合有不同用途,在这里不如直接说成意图和实现分离)
    //  Created by liangshun on 18/5/30.
    //  Copyright © 2018年 liangshun. All rights reserved.
    
    #import <Foundation/Foundation.h>
    //typedef int(* type_pfun) (int,int);//type_pfun 是某种函数指针 数据类型.
    typedef void(*clickCallback) (int m);
    
    void onClick_1(int m)
    {
        NSLog(@"button funcont1:%i",m);
    }
    
    void onClick_2(int m)
    {
        NSLog(@"button funcont2:%f",(float)m);
    }
    
    
    @interface MyButton : NSObject
    @property clickCallback myCallBack;//我会实现一个意图,但具体实现可以在外部扩展。
    -(void) Click:(int)m;
    @end
    
    
    @implementation MyButton
    -(void)Click:(int)m
    {
        self.myCallBack(m);
    }
    @end
    
    
    int main(int argc, const char * argv[]) {
        int money=3;
        MyButton *submitButton=[MyButton new];
        submitButton.myCallBack=onClick_1;
        [submitButton Click:money];
        
        submitButton.myCallBack=onClick_2;
        [submitButton Click:money];
        return 0;
    }
    //
    //  main.m
    //  practice
    //  block ,在意图和实现分离的场合中,是一种直接,简洁,但不可复用的写法。
    //  Created by liangshun on 18/5/30.
    //  Copyright © 2018年 liangshun. All rights reserved.
    
    #import <Foundation/Foundation.h>
    
    typedef void(^clickCallback) ();//定义一个block来表达意图。
    
    
    
    
    @interface MyButton : NSObject
    @property clickCallback myCallBack;//我有一个意图,但具体实现可以在外部扩展。
    -(void) Click;
    @end
    
    
    @implementation MyButton
    -(void)Click
    {
        self.myCallBack();
    }
    @end
    
    
    int main(int argc, const char * argv[]) {
        
        MyButton *submitButton=[MyButton new];
        int money=3;
        submitButton.myCallBack=^//直接写实现,不可复用,但是省去传参数的麻烦。
        {
            NSLog([NSString stringWithFormat:@"fun1:%i",money]);
        };
        [submitButton Click];
        
        submitButton.myCallBack=^
        {
            NSLog([NSString stringWithFormat:@"fun2:%f",(float)(money)]);
        };
        [submitButton Click];
        return 0;
    }
  • 相关阅读:
    GridView加ObjectDataSource做删除事件(ObjectDataSourceStatusEventHandler 委托)
    非常酷的三级下拉菜单!!(javascript)
    sql事务处理(转)
    首页头部下拉广告设计(javascript)
    JavaScript 强行弹出窗口 与 无提示关闭页面
    androd之绘制文本(FontMetrics)[转]
    Android 字 成 圆
    python写的二分插入算法
    Loading效果 UIActivityIndicatorView
    ios6.0 调用系统api 分享到 twitter facebook weibo
  • 原文地址:https://www.cnblogs.com/lsfv/p/9127985.html
Copyright © 2011-2022 走看看