作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Facebook iPhone SDK 编写一个简单的应用程序。 Facebook 代码大部分是异步的,我启动一个操作并在委托(delegate)调用中异步接收响应:
- (void) doSomething {
[FBSomething startOperationWithDelegate:self];
}
- (void) fbOperationFinished: (FBSomething*) operation {…}
给定操作(例如 FBRequest
)的多个实例经常使用相同的回调。这意味着我必须将条件子句放入回调处理程序中才能知道哪些操作已完成。
这会导致困惑,一种“异步面条代码”怪物,因为代码充满了条件,几乎看不到程序流逻辑。有没有更好的方法来编写这样的代码? (很遗憾我们在 iPhone 上没有 block 。)我考虑过引入一个简单的状态机,但我不确定它是否有帮助。
最佳答案
我不熟悉 Facebook SDK,但您可以创建一个子类来实现 FBRequestDelegate
协议(protocol)(如果这样调用的话),用于您需要 Facebook 的每个特定任务。这样,您就有 5 个实现 - fbOperationFinished:
的类,而不是一个具有由 if
或 switch
分隔的 5 个不同执行路径的类。
关于iphone - 我如何处理异步意大利面条代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2213118/
我是一名优秀的程序员,十分优秀!