【问题标题】:Abort processing of CATiledLayer?中止 CATiledLayer 的处理?
【发布时间】:2011-03-10 14:09:06
【问题描述】:

我有一个视图控制器,它包含一个滚动视图、一个内容视图和一个 CATiledLayer 作为内容视图中的子层。

如果我在 CATiledLayer 仍然忙(例如呈现 PDF 页面)时从其父视图中删除我的控制器视图,我会得到最奇怪的崩溃和空引用。如果你打扰它,CATiledLayer 似乎会不高兴。有没有办法可以中止它目前正在做的事情?

【问题讨论】:

    标签: objective-c cocoa-touch ios4 xamarin.ios


    【解决方案1】:

    您要删除的控制器是 CATiledLayer 的代表,我说得对吗?

    然后你必须在移除你的控制器时将 CATiledLayer 的委托设置为 nil。

    可能是相关链接(我自己的问题XD):CATiledLayer drawLayer:inContext: crashing when the view is deallocated while the image to draw is being retrieved

    【讨论】:

    • 很难说。我在 MonoTouch :-) 委托是我的控制器的内部类。我已经搜索过 SO 并找到了您的其他帖子,但它对我不起作用。我试图将我的委托设置为 null,但在 MT 中可能不是这样。
    • 我明白了。不幸的是,我不知道 MonoTouch。我所知道的是 CATiledLayer 处理它想要在后台绘制的内容,然后在它准备好显示时调用委托。如果该委托指针不是 nil,并且该指针未指向合适的类,那么您将获得随机崩溃和 null refs。
    • 你最后是对的!但我同时面临第二个问题:要更改页面,我使用滑动手势识别器。 CocoaTouch 中似乎有一个错误,如果它所属的视图从其父视图中删除,则会导致识别器的处理程序第二次被触发。这导致了 NULLREF,我认为这是由于 CATiledLayer。
    • 哦。很高兴知道我帮了一点忙。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多