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();
}
typedef void (^DBAvatarTouchEventBlock) ();
这是一种典型的block定义,没有参数,没有返回值。
在具体应用时,声明上述类的一个对象,并把希望实现的代码直接添加到block中,
DBAvatarImageView *imageView = [[[DBAvatarImageViewalloc] initWithFrame:CGRectMake(5 + i * 96,0, 91, 91) block:^{
NSLog(@"Image View has been touched.");
}] autorelease];
使用block的好处是,在这种情况我们不再需要设置delegate,而是直接把想要实现的代码写入block中就可以。
以上就是最简单的一种block应用。
本文介绍 iOS 开发中 Block 的基本概念及其用法。通过实例展示了如何利用 Block 简化手势识别器的设置过程,避免了 delegate 的使用,使得代码更为简洁高效。
686

被折叠的 条评论
为什么被折叠?



