我正在使用Facebook iPhone SDK编写一个简单的应用程序.Facebook代码主要是异步的,我开始一个操作并在委托调用中异步接收响应:
- (void) doSomething { [FBSomething startOperationWithDelegate:self]; } - (void) fbOperationFinished: (FBSomething*) operation {…}
通常,有更多的给定操作(例如FBRequest
)使用相同的回调.这意味着我必须将一个条件子句放入回调处理程序,以了解这些操作中的哪一个已完成.
这导致了凌乱,一种"异步意大利面条代码"怪物,因为代码充满了条件,并且几乎不可能看到程序流逻辑.有没有更好的方法来编写这样的代码?(遗憾的是我们在iPhone上没有块.)我想过引入一个简单的状态机,但我不确定它会有所帮助.
我不熟悉Facebook SDK,但您可以创建一个子类来实现FBRequestDelegate
您需要Facebook的每个特定任务的协议(如果它被称为那样).这样,您可以说5个类实现- fbOperationFinished:
而不是一个类,其中5个不同的执行路径由if
s或switch
es 分隔.