2011-03-10 12 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