2011-03-10 31 views
1

我有一個視圖控制器,其中包含滾動視圖,內容視圖和CATiledLayer作爲內容視圖中的子圖層。中止處理CATiledLayer?

如果我從其超級視圖中刪除我的控制器視圖,而CATiledLayer仍忙(呈現一個PDF頁面爲例),我得到最怪異的崩潰和空引用。好像CATiledLayer不開心,如果你不好意思。有沒有辦法阻止它目前正在做的事情?

回答

1

我說得對,您要移除的控制器是CATiledLayer的代表嗎?

然後,當您移除控制器時,必須將CATiledLayer的委託設置爲nil。

可能是相關的鏈接(我自己的問題XD):CATiledLayer drawLayer:inContext: crashing when the view is deallocated while the image to draw is being retrieved

+0

很難說。我在MonoTouch上:-) 委託是我的控制器的內部類。我已經搜索過,發現了你的其他帖子,但它不適合我。我試圖將我的委託設置爲null,但也許事情在MT中沒有這種方式。 – Krumelur 2011-03-10 14:50:17

+0

我明白了。不幸的是,我不知道MonoTouch。我所知道的是,CATiledLayer處理它想要在後臺繪製的內容,然後在準備好顯示時調用委託。如果該委託指針不爲零,並且該指針未指向適當的類,那麼您將得到隨機崩潰和空的參考。 – Altealice 2011-03-10 14:54:18

+0

你到頭了!但是我同時面臨第二個問題:要更改頁面,我使用滑動手勢識別器。 CocoaTouch似乎有一個錯誤,它會導致識別器的處理程序第二次被觸發,如果它所屬的視圖從其超級視圖中被移除的話。這導致了一個NULLREF,我認爲這是由於CATiledLayer。 – Krumelur 2011-03-10 16:33:43