2016-09-06 9 views
3

AWSを使用しており、AWSTaskのヘルプが必要です。基本的には、読みやすさのための変数として宣言したいいくつかの非常に大きなブロックがあります。例えば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];

:ここ

- (AWSTask *)continueWithSuccessBlock:(AWSContinuationBlock)block; 

が関与typedefである:ここでは

Incompatible block pointer types initializing 'void (^__strong)(AWSTask *__strong)' with an expression of type 'void *(^)(AWSTask *__strong)' 

は、メソッドの宣言であるこれは私がこれまで持っているものです。

typedef __nullable id(^AWSContinuationBlock)(AWSTask<ResultType> *task); 

すべてのポインターをいただければ幸いです!

答えて

0

戻り値のタイプがvoidではありませんでした。また、空白ブロックからnilを返していたので、その行を削除しました。ここでは正しい構文は次のとおりです。戻り値の型の面では

void (^myBlock)(AWSTask *task) = ^void(AWSTask *task){ 
    //Do something with the AWSTask 
}; 

[task continueWithSuccessBlock:myBlock]; 

、彼らが宣言された型を返す必要がありますという点で、ブロックは、基本的な方法のようなものです。

これは参考になりまし参照です:彼らは包括的ではありませんが、ここでhttp://fuckingblocksyntax.com/

は、Appleのドキュメントから、さらに2つのまともな参照です:ここでは、より明示的に名前のドメインにちょうどミラーでhttp://goshdarnblocksyntax.com/

A Short Practical Guide to Blocks

Working with Blocks

幸運、私はそれが役に立てば幸い!

+0

'AWSContinuationBlock _Nonnull'(別名id _Nullable(^)(AWSTask )型のパラメータに 'void(^ const __ strong)(AWSTask * __ strong)'を送信する互換性のないブロックポインタ型が、 * _Nonnull __strong) ') – Peter

+0

@Peter(^ const __strong)がどこから来ているのだろうか。また、どのXcodeを実行していますか? – Sheamus

+0

Xcode 7.3.1とポッド 'AWSCore'、 '2.4.7' – Peter

関連する問題