使用 AWSTask,如何将块声明为变量
Using AWSTask, How to declare a block as a variable
我正在使用 AWS,需要有关 AWSTask 的帮助。基本上我有一些非常大的块,我想将它们声明为变量以提高可读性。
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/awstask.html
例如这段代码:
[task continueWithSuccessBlock:^id(AWSTask *task) {
//do something
return nil;
}];
如何将块提取为局部变量?这是我到目前为止得到的:
void (^myBlock)(AWSTask *task) = ^(AWSTask *task){
//do something
return nil;
};
[task continueWithSuccessBlock:myBlock];
给出错误:
Incompatible block pointer types initializing 'void (^__strong)(AWSTask *__strong)' with an expression of type 'void *(^)(AWSTask *__strong)'
方法声明如下:
- (AWSTask *)continueWithSuccessBlock:(AWSContinuationBlock)block;
这里是涉及到的typedef:
typedef __nullable id(^AWSContinuationBlock)(AWSTask<ResultType> *task);
如有指点,将不胜感激!
您缺少 return 类型 void
。此外,您从空块 returning nil
,所以我删除了该行。这是正确的语法:
void (^myBlock)(AWSTask *task) = ^void(AWSTask *task){
//Do something with the AWSTask
};
[task continueWithSuccessBlock:myBlock];
就 return 类型而言,块本质上类似于方法,因为它们必须 return 声明的类型。
这是一个有用的参考:http://goshdarnblocksyntax.com/,
这只是这里更明确命名的域的镜像:http://fuckingblocksyntax.com/
这里有两个来自 Apple 文档的比较不错的参考资料,尽管它们并不全面:
A Short Practical Guide to Blocks
祝你好运,希望对你有所帮助!
我正在使用 AWS,需要有关 AWSTask 的帮助。基本上我有一些非常大的块,我想将它们声明为变量以提高可读性。
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/awstask.html
例如这段代码:
[task continueWithSuccessBlock:^id(AWSTask *task) {
//do something
return nil;
}];
如何将块提取为局部变量?这是我到目前为止得到的:
void (^myBlock)(AWSTask *task) = ^(AWSTask *task){
//do something
return nil;
};
[task continueWithSuccessBlock:myBlock];
给出错误:
Incompatible block pointer types initializing 'void (^__strong)(AWSTask *__strong)' with an expression of type 'void *(^)(AWSTask *__strong)'
方法声明如下:
- (AWSTask *)continueWithSuccessBlock:(AWSContinuationBlock)block;
这里是涉及到的typedef:
typedef __nullable id(^AWSContinuationBlock)(AWSTask<ResultType> *task);
如有指点,将不胜感激!
您缺少 return 类型 void
。此外,您从空块 returning nil
,所以我删除了该行。这是正确的语法:
void (^myBlock)(AWSTask *task) = ^void(AWSTask *task){
//Do something with the AWSTask
};
[task continueWithSuccessBlock:myBlock];
就 return 类型而言,块本质上类似于方法,因为它们必须 return 声明的类型。
这是一个有用的参考:http://goshdarnblocksyntax.com/, 这只是这里更明确命名的域的镜像:http://fuckingblocksyntax.com/
这里有两个来自 Apple 文档的比较不错的参考资料,尽管它们并不全面:
A Short Practical Guide to Blocks
祝你好运,希望对你有所帮助!