KWBlock.m 793 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // Licensed under the terms in License.txt
  3. //
  4. // Copyright 2010 Allen Ding. All rights reserved.
  5. //
  6. #import "KWBlock.h"
  7. @interface KWBlock()
  8. #pragma mark - Properties
  9. @property (nonatomic, readonly, copy) void (^block)(void);
  10. @end
  11. @implementation KWBlock
  12. #pragma mark - Initializing
  13. - (id)initWithBlock:(void (^)(void))block {
  14. self = [super init];
  15. if (self) {
  16. _block = [block copy];
  17. }
  18. return self;
  19. }
  20. + (id)blockWithBlock:(void (^)(void))aBlock {
  21. return [[self alloc] initWithBlock:aBlock];
  22. }
  23. #pragma mark - Calling Blocks
  24. - (void)call {
  25. self.block();
  26. }
  27. @end
  28. #pragma mark - Creating Blocks
  29. KWBlock *theBlock(void (^block)(void)) {
  30. return lambda(block);
  31. }
  32. KWBlock *lambda(void (^block)(void)) {
  33. return [KWBlock blockWithBlock:block];
  34. }