iOS开发 block的简单使用

本文介绍 iOS 开发中 Block 的基本概念及其用法。通过实例展示了如何利用 Block 简化手势识别器的设置过程,避免了 delegate 的使用,使得代码更为简洁高效。

http://www.l99.com/EditText_view.action?textId=440303


block是iOS开发的一种新的特性,主要表达方式为

^{

...

},

有些类似于C++中的函数指针,但使用起来更加方便。

 

下面是一段代码:

 

- (id)initWithFrame:(CGRect)frame block:(DBAvatarTouchEventBlock)block

{

    self = [super initWithFrame:frame];

    if (self) {

        // Initialization code here.

        _block = Block_copy(block);

       

        self.userInteractionEnabled = YES;

        UITapGestureRecognizer *singleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(singleTap:)];

        [self addGestureRecognizer:singleTap];

        [singleTap release];

    }

   

    returnself;

}

 

- (void)dealloc

{

    Block_release(_block);

    [super dealloc];

}

 

#pragma mark - UIGestureRecognizer Methods

- (void)singleTap:(UIPanGestureRecognizer*)gestureRecognizer

{

    _block();

}

 
_block为类中一个block成员变量,类型为DBAvatarTouchEventBlock,DBAvatarTouchEventBlock的定义为
 

typedef void (^DBAvatarTouchEventBlock) ();

 

这是一种典型的block定义,没有参数,没有返回值。

 

在具体应用时,声明上述类的一个对象,并把希望实现的代码直接添加到block中,

 

DBAvatarImageView *imageView = [[[DBAvatarImageViewallocinitWithFrame:CGRectMake(5 + i * 96,09191block:^{

                   

                   NSLog(@"Image View has been touched.");

                   

                }autorelease];

 

使用block的好处是,在这种情况我们不再需要设置delegate,而是直接把想要实现的代码写入block中就可以。

 

以上就是最简单的一种block应用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值