标签:style blog io color os ar 使用 for sp
问题:
- (NSInteger) subtract:(NSInteger)paramValue from:(NSInteger)paramFrom{ return paramFrom - paramValue; }
C函数:
NSInteger subtract(NSInteger paramValue, NSInteger paramFrom){ return paramFrom - paramValue; }
现在看看作为 Block Object 我们如何编码同样的功能:
NSInteger(^subtract)(NSInteger,NSInteger) = ^(NSInteger paramValue, NSInteger paramFrom){ return paramFrom - paramValue; }
再看一个例子:
C:
NSString* intToString (NSUInteger paramInteger){ return [NSString stringWithFormat:@"%lu", (unsigned long)paramInteger]; }
Block Object:
NSString* (^intToString)(NSUInteger) = ^(NSUInteger paramInteger){ NSString *result = [NSString stringWithFormat:@"%lu",(unsigned long)paramInteger]; return result; }
从上面可以看到独立Block Object最简单的形式为
void (^simpleBlock)(void) = ^{ /**/ };
总结其表达式为
返回值类型 (^函数名)(参数类型,参数类型...) = ^(参数类型+参数名,参数类型+参数名...){
}
//独立的Block Objects 代码
NSString* (^intToString)(NSUInteger) = ^(NSUInteger paramInteger){ NSString *result = [NSString stringWithFormat:@"%lu",(unsigned long)paramInteger]; return result; }; - (void) callIntToString{ NSString *string = intToString(10); //能够像函数一样调用
NSLog(@"string = %@", string); }
上面代码中,callIntToString方法中通过给intToString block传入一个参数10,并将 这个 block 的返回值放在一个 string 局部变量中.
3.
#import "AppDelegate.h" typedef NSString* (^IntToStringConverter)(NSUInteger paramInteger); //这个 typedef 告诉编译器 Block Objects 接受一个整数参数并且返回一个被 IntToString Converter 命名的标示符来展现的字符串。
- (NSString *)convertIntToString:(NSUInteger)paramInteger usingBlockObject:(IntToStringConverter)paramBlockObject{ return paramBlockObject(paramInteger); }
调用上面的方法:
NSString *result = [self convertIntToString:123 usingBlockObject:^NSString *(NSUInteger paramInteger) { NSString *result = [NSString stringWithFormat:@"%lu",(unsigned long)paramInteger]; return result; }];
4.
标签:style blog io color os ar 使用 for sp
原文地址:http://www.cnblogs.com/safiri/p/4056438.html