При разработке блочного API в ObjC, какой подход лучше, один блок завершения или два, по одному для успеха и отказа?
Скажем, у нас есть метод, который асинхронно возвращает что-либо в блок, с одним блоком завершения он будет:
- (void) retrieveSomethingCompletion:(void (^)(id retrievedObject, NSError *error))completionBlock;
И с блоками успеха/отказа (стиль AFNetworking):
- (void) retrieveSomethingSuccess:(void(^)(id retrievedObject))successBlock failure:(void(^)(NSError *error))failureBlock;
Я всегда использую второй подход, но каковы преимущества/недостатки каждого варианта? Что вы обычно используете и почему?