main
1//
2// Licensed under the terms in License.txt
3//
4// Copyright 2010 Allen Ding. All rights reserved.
5//
6
7#import "KWBlock.h"
8
9@interface KWBlock()
10
11#pragma mark -
12#pragma mark Properties
13
14@property (nonatomic, readonly, assign) KWVoidBlock block;
15
16@end
17
18@implementation KWBlock
19
20#pragma mark -
21#pragma mark Initializing
22
23- (id)initWithBlock:(KWVoidBlock)aBlock {
24 if ((self = [super init])) {
25 block = Block_copy(aBlock);
26 }
27
28 return self;
29}
30
31+ (id)blockWithBlock:(KWVoidBlock)aBlock {
32 return [[[self alloc] initWithBlock:aBlock] autorelease];
33}
34
35- (void)dealloc {
36 Block_release(block);
37 [super dealloc];
38}
39
40#pragma mark -
41#pragma mark Properties
42
43@synthesize block;
44
45#pragma mark -
46#pragma mark Calling Blocks
47
48- (void)call {
49 block();
50}
51
52@end
53
54#pragma mark -
55#pragma mark Creating Blocks
56
57KWBlock *theBlock(KWVoidBlock aBlock) {
58 return lambda(aBlock);
59}
60
61KWBlock *lambda(KWVoidBlock aBlock) {
62 return [KWBlock blockWithBlock:aBlock];
63}