BLOCK小练习
BLOCK小练习
小鸡蹲蘑菇 发表于3年前
BLOCK小练习
  • 发表于 3年前
  • 阅读 88
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: 整个帖子和上一帖有些类似
TestBlock.h
typedef int(^SumBlock)(int num1, int num2);
#import <Foundation/Foundation.h>
@interface Testblock : NSObject
@property (nonatomic,copy) SumBlock sumblock;
-(void)beginSum:(SumBlock)sumb;
-(void)callSum;
@end
@implementation Testblock
static Testblock *myblock = nil;
+ (instancetype)allocWithZone:(struct _NSZone *)zone//单例练习可以忽略
{
    @synchronized(self)
    {
        
        if (myblock == nil)
            
        {
            myblock = [super allocWithZone:zone];
            
            return myblock;
        }
        
        
    }
    
    return myblock;
    
}
-(void)callSum
{
    if (_sumblock)
    {
        
        int c = _sumblock(6,8);
        NSLog(@"%d",c);
    }
}
-(void)beginSum:(SumBlock)sumb
{
    _sumblock = sumb;
    //保存block的实现,在ViewController里面实现了这个block的方法之后,回传block到这里。之后callsum调用_sumblock便能够打印出求和的值,
    //整个过程相当于将6和8传给了ViewController,viewc再把实现方法传回到这里。
}
@end


- (void)viewDidLoad {
    [super viewDidLoad];
    
    Testblock *tblock = [[Testblock alloc ]init];
    Testblock *tblock1 = [[Testblock alloc ]init];
    NSLog(@"%p",tblock);
    NSLog(@"%p",tblock1);//单例写的是否正确,可以忽略
    [tblock beginSum:^int(int num1, int num2) {
        return num1 + num2;//实现block的方法        
    }];
    [tblock callSum];
}



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 68
码字总数 24144
×
小鸡蹲蘑菇
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: