没有 return 值的块
Blocks with no return value
有没有正确的方法在Objective-C中写入没有return值的块?我见过的所有例子都是 return 值。有人还可以解释一下完成块和常规块之间的区别吗?我知道 ^ 表示它是一个块,但 (void) 之前的 + 不也表示它是一个块吗?
如果方法头具有块参数,则方法头如下所示:
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
所以没有 return 类型和参数的块看起来像这样:
- (void)someMethodThatTakesABlock:(void (^)(void))blockName;
常规块只是一组(或一组)代码。完成块是将在方法完成时执行的块。完成块是一个常规块,它只是特定于在方法结束时被调用。
^
表示一个块。方法前的 +
是 class 方法。
其他使用积木的方法
作为局部变量
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
作为 属性
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
作为方法参数
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
作为方法调用的参数
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
作为类型定义
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
您只需将 returnType
替换为 void
。
这是一个演示:
1、无return值且无参数:
- (void)viewDidLoad {
[super viewDidLoad];
//block
void(^myBlock)(void) = ^(void) {
NSLog(@"This is a block without parameter and returned value");
};
myBlock();
2、无return值且有参数:
-(void)blockWithParameterButNoReturnData
{
void(^myBlock)(int) = ^(int num) {
NSLog(@"%d",num*100);
};
myBlock(4);
}
3、有返回值,有参数:
-(void)blockWithParameterAndReturnValue
{
int (^myBlock)(int) = ^(int num) {
return num * 100;
};
int result = myBlock(2);
NSLog(@"This is a block with parameter and return value :%d",result);
}
PS:有关更多信息,请参阅此网站:http://www.cnblogs.com/zhanggui/p/4656440.html
有没有正确的方法在Objective-C中写入没有return值的块?我见过的所有例子都是 return 值。有人还可以解释一下完成块和常规块之间的区别吗?我知道 ^ 表示它是一个块,但 (void) 之前的 + 不也表示它是一个块吗?
如果方法头具有块参数,则方法头如下所示:
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
所以没有 return 类型和参数的块看起来像这样:
- (void)someMethodThatTakesABlock:(void (^)(void))blockName;
常规块只是一组(或一组)代码。完成块是将在方法完成时执行的块。完成块是一个常规块,它只是特定于在方法结束时被调用。
^
表示一个块。方法前的 +
是 class 方法。
其他使用积木的方法
作为局部变量
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
作为 属性
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
作为方法参数
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
作为方法调用的参数
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
作为类型定义
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
您只需将 returnType
替换为 void
。
这是一个演示:
1、无return值且无参数:
- (void)viewDidLoad {
[super viewDidLoad];
//block
void(^myBlock)(void) = ^(void) {
NSLog(@"This is a block without parameter and returned value");
};
myBlock();
2、无return值且有参数:
-(void)blockWithParameterButNoReturnData
{
void(^myBlock)(int) = ^(int num) {
NSLog(@"%d",num*100);
};
myBlock(4);
}
3、有返回值,有参数: -(void)blockWithParameterAndReturnValue
{
int (^myBlock)(int) = ^(int num) {
return num * 100;
};
int result = myBlock(2);
NSLog(@"This is a block with parameter and return value :%d",result);
}
PS:有关更多信息,请参阅此网站:http://www.cnblogs.com/zhanggui/p/4656440.html