0

完了ブロックを使用してメソッドを作成しようとしています:

//typedef head of block
typedef void (^CommonErrors)(NSError *error);

//method with block
-(void)MethodWithString:(NSString*)string onError:(CommonErrors)ErrorBlock;

//somewhere in code:

[self MethodWithString:(NSString*) onError:^(NSError *error)ErrorBlock];

をダブルクリックすると^(NSError *error)ErrorBlock、次の
コードが表示されます。^(NSError *error){code}

[self MethodWithString:(NSString*) 
               onError:^(NSError *error){
                   code
               }
];

しかし、毎回 this を使用するときはCommonErrors
自分のテンプレートを使用します: onError:(CommonErrors)ErrorBlock.
私のコードはどこでも次のようになります。

onError:^(NSError *error){
    ErrorBlock(error)
}

このテンプレートをどこかで定義することでこれを行うことはできますか? それとも似たようなもの?出来ますか?

4

1 に答える 1

2

実際、私はあなたの質問を読み直しました-ブロックタイプはコンシューマーメソッドのシグネチャで使用されることはありません。この理由は、タイプを見ずに、他の誰かがどのパラメーターを渡すかをどのように知るのでしょうか。

表示されている動作は仕様によるものであり、ブロックのtypedefは実際のシグネチャに拡張されます。

どうやらこれはコードスニペットの質問です。

このhttp://nearthespeedoflight.com/article/xcode_4_code_snippetsを参照してください

于 2012-08-31T09:34:28.347 に答える