我有一種情況,可能是因爲在使用代表時缺乏對常規方法的理解而導致的。你能幫忙嗎?離開UIView時我應該殺死對等方法嗎?
請考慮我有一個叫做'homeViewController'的UIView。
此UIView實例化一個名爲'datastoreSync'的類,它是一個處理與遠程服務器同步後端的包裝類。我將UIView設置爲委託,並將數據存儲同步類分配給UIVIew中的變量。類datastoreSync依次依次觸發幾個類和方法,並將它們依次設置爲每個類的代理。所以... datastoreSync類將實例化'assetTree'並將自己設置爲委託。它等着'我完成了!'委派事件,然後轉到下一課。
assetTree類(以及所有其他小類)依次委託給處理通信的NSURLConnection對象。
現在,datastoreSync包裝類可能需要一些時間來完成它的工作,並且在運行時用戶可能會從我的UIView移動到另一個UIView。發生這種情況時,datastoreSync對象會保持活動狀態,因爲assetTree類正在完成它的工作。當assetTree類將自己設置爲NSURLConnection的委託並設置運行datastoreSync類的NSURLConnection超出範圍時。 assetTree類無法將委託事件重新提交給它,不幸的是,datastoreSync類中的靜態變量阻止其連續運行多次,因此無法重置,因此datastoreSync類會變得「鎖定」而無法再次運行。
我擔心我缺少一些基本的東西。如果用戶關閉設備,我需要datastoreSync類保持活動狀態,這樣他們才能啓動同步過程,然後鎖定設備,並很高興該更新會在後臺繼續進行,但我不知道我應該在什麼時候執行操作從一個UIView移動到另一個UIView。
當我離開視圖並編寫代碼以停止所有委託方法(如assetTree類)時,是否會發送datastoreSync類'kill'命令,實質上是放棄它的NSURLConnection響應?
我不確定如何正確處理此問題。我不害怕很多工作,我只是希望它是正確的請。
當你說'UIView',你的意思是'UIViewController'?他們是非常不同的東西。 – Jim
是的,我的意思是UIVIewController。謝謝你指出我的錯誤! –