原文链接:http://blog.csdn.net/lybeen2007/article/details/48391339
#import "ViewController.h"
#pragma mark - blcok作为属性
@interface ViewController ()
/**<没有返回值,没有参数的block*/
@property (nonatomic, copy) void (^myBlock1)();
/**<有返回值,没有参数的block*/
@property (nonatomic, copy) int (^myBlock2)();
/**<没有返回值,有参数的block*/
@property (nonatomic, copy) void (^myBlock3)(int , int );
/**<有返回值,有参数的block*/
@property (nonatomic, copy) int (^myBlock4)(int , int );
/**<age*/
@property (nonatomic, assign) int age;
@end
@implementation ViewController
- (void )viewDidLoad {
[super viewDidLoad];
#pragma mark - 作为参数
[self setupNav1:^{
NSLog(@"%s" , __func__);
}];
[self setupNav2:^int {
return 3 ;
}];
[self setupNav3:^(int a, int b) {
NSLog(@"%d" , a + b);
}];
[self setupNav4:^int (int a, int b) {
return a + b;
}];
#pragma mark - 作为返回值调用
[self setupTab1]();
[self setupTab2]();
[self setupTab3](1 , 3 );
[self setupTab4](1 , 3 );
}
#pragma mark - blcok作为参数
/**
* 没有返回值,没有参数的block作为参数
*/
- (void )setupNav1:(void (^)())myBlock1
{
myBlock1();
}
/**
* 没有返回值,没有参数的block作为参数
*/
- (void )setupNav2:(int (^)())myBlock2
{
myBlock2();
}
/**
* 没有返回值,有参数的block作为参数
*/
- (void )setupNav3:(void (^)(int , int ))myBlock3
{
myBlock3(3 , 5 );
}
/**
* 没有返回值,有参数的block作为参数
*/
- (void )setupNav4:(int (^)(int , int ))myBlock4
{
myBlock4(3 , 5 );
}
#pragma mark - blcok作为返回值
/**
* 没有返回值,没有参数的block作为返回值
*/
- (void (^)())setupTab1
{
void (^block)() = ^{
NSLog(@"setupNav1" );
};
return block;
}
/**
* 有返回值,没有参数的block作为返回值
*/
- (int (^)())setupTab2
{
int (^block)() = ^{
NSLog(@"setupNav1" );
return 3 ;
};
return block;
}
/**
* 没有返回值,有参数的block作为返回值
*/
- (void (^)(int , int ))setupTab3
{
void (^block)(int , int ) = ^(int a, int b){
int c = a + b;
NSLog(@"%d" , c);
};
return block;
}
/**
* 有返回值,有参数的block作为返回值
*/
- (int (^)(int , int ))setupTab4
{
int (^block)(int , int ) = ^(int a, int b){
int c = a + b;
NSLog(@"%d" , c);
return c;
};
return block;
}
@end
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132