我試圖集中我的應用程序的網絡代碼。基本上,在任何需要從服務器獲取信息的地方,我創建一個對象serverRequest來獲取信息。當ServerRequest完成時,它需要將信息發回給調用對象。當然,它應該異步工作 - 我不希望我的應用程序在等待時停下來。集中我的目標C應用程序的網絡代碼
該信息的返回是棘手的部分。看來我的選擇是委派和通知。據我所知,他們都有他們的問題:
代表: 我把自己作爲一個代理傳遞給serverRequest對象。問題是,如果我在請求完成之前解除分配,那麼serverRequest將傳遞一個釋放對象,並且我的程序將崩潰。爲了防止這種情況發生,我將不得不跟蹤所有服務器請求(可能有多個請求),並讓我們在我的dealloc方法中知道所有請求,以便我不會再收到任何消息。所有這些都是可能的,但它確實看起來像一個痛苦。
通知: 似乎有很多工作要傳遞信息。我必須將自己添加爲通知中心的觀察員,然後在我釋放時刪除自己。此外,我必須在ServerRequest中傳遞完成後發佈什麼樣的通知的信息。我的ServerRequest必須將接收到的數據推送到NSDictionary中,然後在傳遞之後將其返回。
這兩種方法都應該可以工作,但它們看起來像是一個非常大的努力,只是讓ServerRequest喚醒調用代碼並將它傳遞給一個對象。我認爲通知有點更靈活,更少一點痛苦,導致崩潰的可能性更小,但我對這兩種方法都不滿意。對於任何反饋,我們都表示感謝。謝謝。