Я пишу простое приложение, используя Facebook iPhone SDK.Код Facebook в основном асинхронный, я запускаю операцию и получаю ответ асинхронно во время вызова делегата:
- (void) doSomething {
[FBSomething startOperationWithDelegate:self];
}
- (void) fbOperationFinished: (FBSomething*) operation {…}
Довольно часто встречается больше экземпляров данной операции (скажем, FBRequest
), которые используют один и тот жеПерезвоните.Это означает, что мне нужно поместить условное предложение в обработчик обратного вызова, чтобы узнать, какая из этих операций завершена.
Это приводит к грязному, своего рода «асинхронному спагетти-коду», потому что код полон условных выражений ипочти невозможно увидеть логику выполнения программы.Есть ли лучший способ написать такой код?(Жаль, что у нас нет блоков на iPhone.) Я думал о введении простого конечного автомата, но я не уверен, что это поможет.