iOS - block基本使用

block的概念

  • OC在C的基础之上新增了一些数据类型。

BOOL
Boolen
class
nil
SEL
id
block

  • block是1个数据类型。
    int double float char ......
    既然是一个数据类型,那么就可以声明这个数据类型的变量,所以我们完全也可以声明1个block类型的变量
    不同类型的变量中可以存储以下数据:
    1. block是一个数据类型,所以我们可以声明1个block类型的变量
    2. block类型的变量中专门存储1段代码,这段代码可以有参数,可以有返回值。

block的使用

  1. 无参数,无返回值,声明和定义
//1.无参数,无返回值,声明和定义
        void(^MyBlockOne)(void) = ^(void){
            
            NSLog(@"无参数,无返回值");
            
        };
        MyBlockOne();//block的调用
  1. 有参数,无返回值
//2.有参数无返回值
        void(^block2)(int a) = ^(int a){
            NSLog(@"%d,我就是block,有参数,无返回值",a);
        };
        block2(10);
  1. 有参数,有返回值
//3.有参数有返回值
        int(^block3)(int,int) = ^(int a,int b){
            NSLog(@"%d我就是block,有参数,有返回值",a+b);
            return a+b;
        };
        block3(10,30);
  1. 无参数有返回值(很少用到)
//4.无参数有返回值(很少用到)
        int(^block4)(void) = ^ {
            return 45;
        };
        NSLog(@"%d",block4());
  1. 在项目中的实际应用
#import <Foundation/Foundation.h>
typedef int (^myBlock)(int a,int b);

@interface Person : NSObject
@property(nonatomic,copy)myBlock myblock1;
- (void)createStoreKitPaymentWithCompletionHandler:(void(^)(int a))completionHandler;
@end

//=================================================================================

#import "Person.h"
@implementation Person
- (void)createStoreKitPaymentWithCompletionHandler:(void(^)(int a))completionHandler
{
    NSLog(@"创造a");
    completionHandler(2);
}
@end

//=================================================================================

Person *per = [[Person alloc]init];
per.myblock1 = ^int(int a, int b) {
     return a+b;
};
    
NSLog(@"%d",per.myblock1(1,2));  
[per createStoreKitPaymentWithCompletionHandler:^(int a) {
     NSLog(@"%d",a);
}];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,805评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,871评论 6 13
  • Block基础回顾 1.什么是Block? 带有局部变量的匿名函数(名字不重要,知道怎么用就行),差不多就与C语言...
    Bugfix阅读 11,722评论 5 61
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,949评论 2 9
  • 销售需要了解客户真实的想法,而不是表面上的需求。有一个例子很形象,一名男生和女生恋爱出朋友,男的说我没有房子也没有...
    Aichris阅读 3,641评论 0 1