我正在使用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