- block 作为函数参数
-(void) logic:(NSString* (^)(NSString*))block {
NSString* str = block(@"hello");
NSLog(@"%@", str);
}
调用
[self logic:^NSString*(NSString* str){
NSLog(@"%@", str);
return @"world";
}];
最后打印出:hello
world
注意,实现block时可以写,也可以不写返回值。这样写也是正确的:
[self logic:^(NSString* str){
NSLog(@"%@", str);
return @"world";
}];
2、typedef
typedef:
typedef NSString* (^testBlock2)(NSString*);
定义属性:
@property (nonatomic, copy) NSString* (^testBlock)(NSString*);
@property (nonatomic, copy) testBlock2 myBlock2;
设置属性,同样返回值类型(NSString*)可以不写:
menu.testBlock = ^NSString*(NSString *str){
return @"la";
};
menu.myBlock2 = ^NSString*(NSString *str) {
return @"lala";
};
调用:
if (_myBlock2) {
NSLog(@"%@", _myBlock2(@"ha"));
}
if (_testBlock) {
NSLog(@"%@", _testBlock(@"haha"));
}