首页 > 其他 > 详细

BLOCK小练习

时间:2015-06-15 18:57:43      阅读:269      评论:0      收藏:0      [点我收藏+]
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];
}



BLOCK小练习

原文:http://my.oschina.net/wupengnash/blog/467028

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!