• Objective-C语言中的Block简介以及用法.


    Block语法是在iOS4.0的SDK 中开始新增的, 在那时就已经有了超过400多个API使用了Block语法.

    Block对象又同样是继承与NSObject, 是C语言级别的语法和运行时特性. 和标准的C函数指针类似. 但其除了可执行语句外, 还可以类似对象可以保持状态数据. 

    和C语言的函数指针类似, 但不完全相同. 常用来作为回调函数使用.

     

    Block和函数的操作符对比:

    函数指针使用的是 ‘*’

    Block使用的是 ‘^’

     

    下面是例子:

    apple.h文件

    #import <Foundation/Foundation.h>
    
    @interface apple : NSObject
    
    @property (nonatomic, copy) void (^shuiguo1)(void);  //定义一个Block, 且参数名为shuiguo1
    @property (nonatomic, copy) void (^shuiguo2)(void);
    @property (nonatomic, copy) void (^shuiguo3)(void);
    
    - (void)shuiguo;
    
    @end

    apple.m文件

    #import "apple.h"
    
    @implementation apple
    
    - (void)shuiguo
    {
        if(_shuiguo1)  //判断_shuiguo1是否为0
        {
            NSLog(@"我是苹果");
        }
        if(_shuiguo2)
        {
            NSLog(@"我是香蕉");
        }
        if(_shuiguo3)
        {
            NSLog(@"我是橘子");
        }
    }
    
    @end

    main函数

    #import <Foundation/Foundation.h>
    #import "apple.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            apple *app = [[apple alloc]init];  //创建一个app对象
            
            app.shuiguo1 = ^{    //打印一个shuiguo1的Bolck.
                NSLog(@"我是苹果");
            };
            app.shuiguo2 = ^{
                NSLog(@"我是香蕉");
            };
            app.shuiguo3 = ^{
                NSLog(@"我是橘子");
            };
            [app shuiguo];  //调用shuiguo的方法
        }
        return 0;
    }

     

  • 相关阅读:
    ES6 新属性 Symbol
    box-shadow 属性详解
    在vue 中 使用 tinymce编辑器
    var let const 结合作用域 的探讨
    防抖和节流在vue中的应用
    分享几个按钮样式
    队列学习
    栈的学习
    Object—常用的遍历
    从零认识Java Package
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4013880.html
Copyright © 2020-2023  润新知