iOS - block基本使用

2019-04-01  本文已影响0人  小例子

block的概念

BOOL
Boolen
class
nil
SEL
id
block

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);
}];
上一篇 下一篇

猜你喜欢

热点阅读