ブロックが嫌いです。彼らはコードをより簡潔にすることを意図していますが、私はもっと醜い何かを見つけることができませんでした。例えば、AFNetworkingで:メソッドをブロックとして渡す方法はありますか?
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:^(NSURLRequest *request, NSURLResponse *response, id JSON) {
// Some
// very
// long
// (and as ugly as blocks)
// processing
}
failure:^(NSURLRequest *request, NSURLResponse *response, NSError *error, id JSON)) {
// Failure code
}]
このような何かがはるかに優れただろう:
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:@selector(requestSuccess:response:json:)
failure:@selector(requestSuccess:response:error:)]
だから、それはブロックとして、メソッドのセレクタを使用することは可能でしょうか?もしそうでなければ、どうすればブロックコードを改善できますか?
私は、これらのブロックがobjective-cプログラミングの未来であると思われていて、読めるわけではないので、私を悩ましています。
最初はブロックが「醜い」と思われるかもしれませんが、それらは強力で、特定の理由で「未来」と思われます。私は良い記事をお勧めします:http://ios-blog.co.uk/articles/tutorials/programming-with-blocks-an-overview/ – Alladinian
ブロックはコードを簡潔にしません。より強力なコード。 – dreamlax
これは有効な質問です。ブロックはパラメータ(0..n)を受け取り、パラメータまたはvoidを返すことができるので、メソッドをブロックとして使用できるようにするか、別の方法で置くことができます。クラスレベルでブロックを定義するとよいでしょう。私はあなたができるとは思わない... –