Есть ли способ передать методы как блоки?

Я ненавижу блоки. Они предназначены для того, чтобы сделать код более лаконичным, но ничего более уродливого я не нашел. Например, с 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:)]

Итак, можно ли использовать селекторы методов как блоки? Если нет, как я могу улучшить блочный код?

Меня это раздражает, так как эти блоки кажутся будущим объективного -c программирования, и они просто НЕ читаемы.

10
задан ldiqual 5 July 2012 в 19:48
поделиться