我正在使用Facebook iPhone SDK编写一个简单的应用程序。在Facebook的代码主要是异步的,我开始操作,并在委托调用异步接收响应:如何处理异步面条代码?
- (void) doSomething {
[FBSomething startOperationWithDelegate:self];
}
- (void) fbOperationFinished: (FBSomething*) operation {…}
常常有一个给定的操作的多个实例(比如FBRequest
)使用相同的回调。这意味着我必须将条件子句放入回调处理程序中才能知道哪些操作已完成。
这会导致混乱,一种“异步的意大利面代码”怪物,因为代码充满条件,几乎不可能看到程序流程逻辑。有没有更好的方法来编写这样的代码? (可惜我们在iPhone上没有块。)我想过介绍一个简单的状态机,但我不确定它会有帮助。
+1是的,这是做它的方式。如果任务足够离散以需要大量分支,则它们足够分散以便被封装在自己的类中。请记住,代表附加到实例,而不是类。根据需要,您可以拥有尽可能多的委托实例。 – TechZen 2010-02-06 14:07:18
问题在于任务本身并不足够离散,需要解耦成单独的类。如果代码是同步的,则几乎不会有分支。我很犹豫要创建多个类并共享成员变量,以获得体面的程序流。 – zoul 2010-02-06 15:02:11
...但是,是的,你说得对,这会做。 – zoul 2010-02-06 15:13:57