本文介绍: Objectc 中的block就好像一段C函数般,由函数名,有返回值,有参数,由函数体等1.简单block^(int A ,int B){ int C=A*B; return C;};2、还可以block定义一个typedef:typedef (int) (^sum) (int,int);@property (nonatuomic,assign) sum sumBlock;3、使用block可以构建一个简单的回掉,下面是核心代码实现:Comp

Object-c 中的block就好像一段C函数般,由函数名,有返回值,有参数,由函数体等

1.简单block

^(int A ,int B)
{
    int C=A*B;
    return C;
};

2、还可以block定义一个typedef:

typedef (int) (^sum) (int,int);


@property (nonatuomic,assign) sum sumBlock;

3、有参数返回值的Block

    void (^sumBlock)(int ,int ) = ^(int a,int b){
        NSLog(@"%d + %d = %d",a,b,a+b);
    };

4、有参数返回值的Block

NSString* (^logBlock)(NSString *,NSString *) = ^(NSString * str1,NSString *str2){
        return [NSString stringWithFormat:@"%@%@",str1,str2];
    };
    // 调用logBlock,输出的是 我是Block
 NSLog(@"%@", logBlock(@"我是",@"Block"));

5、使用block可以构建一个简单的回掉,下面是核心代码实现

ComponentBlock.h 

//
//  ComponentBlock.h
//  ZWLimitCounterDemo
//
//  Created by nan on 2021/12/8.
//  Copyright © 2021 wang_ziwu. All rights reserved.
//

#ifndef ComponentBlock_h
#define ComponentBlock_h

//  ComponentBlock.h
//  Memory
//  Created by ludashi on 14-8-19.
//  Copyright (c) 2014年 Mr.li. All rights reserved.
//
 
#import <Foundation/Foundation.h>
//定义Block块类型变量
typedef void (^BlockType) (NSString *parameter);
@interface ComponentBlock : NSObject
 
//声明Block类型变量
@property (nonatomic, strong)BlockType blockDemo;
 
//接受要回调代码块,把接受的代码块赋给成员变量blockDemo
-(void)setBlockDemoTest:(BlockType)blockDemo;
 
//执行代码块的方法
-(void)runBlock;
@end

#endif /* ComponentBlock_h */

ComponentBlock.m

//
//  ComponentBlock.m
//  ZWLimitCounterDemo
//
//  Created by nan on 2021/12/8.
//  Copyright © 2021 wang_ziwu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ComponentBlock.h"
 
@implementation ComponentBlock
 
-(void)setBlockDemoTest:(BlockType)blockDemo
{
    self.blockDemo = blockDemo;
}
 
-(void)runBlock
{
    self.blockDemo(@"我是组件提供的参数");
}
 
@end

main.m
 

#import <Foundation/Foundation.h>
#import "ComponentBlock.h"


int main(int argc, const char * argv[])
{
    @autoreleasepool {
        ComponentBlock *component;
        component = [ComponentBlock new];
         //进行代码块的回调
        [component setBlockDemoTest:^void (NSString *parameter)
        {
            self.firstTextView.text=parameter;
            //打印回调的参数
            NSLog(@"%@", parameter);
        }];
    };


     [component runBlock];
    }
    return 0;


}

原文地址:https://blog.csdn.net/thehunters/article/details/121851808

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32364.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注