2010-07-16 64 views
1

當我刪除視圖並釋放對象時,我的視圖正在進行動畫處理時,我收到setAnimationDidStopSelector中函數集調用的崩潰。我不是100%確定這只是一個UIView動畫的情況下被釋放,而動畫發出的回調被調用到釋放的對象中,但我懷疑它必須處理一些必需的清理。取消特定UIView動畫的代表

當清理可能有動畫目標選擇器的UIViews時,我應該做些什麼,即以某種方式將委託設置爲nil?如果是這樣,我不確定如何進入該特定的動畫來取消委託。

是否有其他明顯的潛在原因造成這次事故?基本上,我開始播放動畫,然後在清理並釋放視圖動畫以及接收回調的對象後不久。

回答

1

可能不是解決方案,但您是否也調用過setAnimationDelegate?它應該保留委託,以避免您的早期版本發生。

+0

感謝提醒,它被保留。實際上,問題在於我從場景中移動並清理,實際上我有一個用作代理的Adapter類。然後這個類調用一個處理回調的C++監聽器。當我清理並釋放obj-c適配器並在清理C++類後不久,保留的適配器被動畫停止調用,並盡職地將它傳遞給現在已經死亡的C++類。 當我清理C++對象時,通過將Adapter的偵聽器設置爲nil,我得到了一些工作。可能並不理想,但它有效。 :) – Joey 2010-07-16 23:49:28

+0

這就解開了這個謎團吧?你做到了這樣,setAnimationDelegate沒有「保留」有效的C++委託。 – mvds 2010-07-17 00:11:15