【发布时间】:2012-07-05 19:48:39
【问题描述】:
我讨厌积木。它们旨在使代码更简洁,但我找不到更难看的东西。例如,使用 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 编程的未来,而且它们只是不可读。
【问题讨论】:
-
块起初可能看起来“丑陋”,但它们很强大,并且有特定的原因它们“似乎是未来”。我会推荐你这篇文章有一个很好的洞察力:ios-blog.co.uk/articles/tutorials/…
-
块不会让代码更简洁,而是让代码更强大。
-
我认为这是一个有效的问题。由于块既可以接收参数(0..n)也可以返回参数或 void,方法应该能够用作块......或者换句话说,在类级别定义块会很好。我不认为你可以......
标签: objective-c objective-c-blocks afnetworking